面试题答案
一键面试稳定性含义
在Python中,列表使用sort
方法排序时,稳定性指的是如果列表中有两个或多个相等的元素,在排序后,这些相等元素的相对顺序与它们在原始列表中的顺序保持一致。例如,有列表[('apple', 3), ('banana', 2), ('cherry', 2)]
,如果按照第二个元素排序且排序算法稳定,那么排序后('banana', 2)
会在('cherry', 2)
之前,保持它们在原始列表中的先后顺序。
稳定性产生重要影响的场景
假设有一个学生成绩列表,每个元素是一个包含学生姓名和成绩的元组,如[('Alice', 85), ('Bob', 90), ('Charlie', 85), ('David', 95)]
。现在要先按成绩从高到低排序,如果成绩相同,保持原来学生出现的顺序。如果使用稳定排序算法,排序后会是[('David', 95), ('Bob', 90), ('Alice', 85), ('Charlie', 85)]
,这样在成绩相同的情况下能保留原始顺序信息,对于一些需要保留原始顺序相关信息的场景(如按照成绩排名,但成绩相同学生的先后顺序有意义,比如先报名的学生在前)非常重要。若使用不稳定排序算法,成绩相同的学生顺序可能会随机打乱,就无法满足这类需求。