直接回答
稳定排序指相等元素在排序前后保持原有相对顺序不变。常见算法中:冒泡、插入、归并、计数、桶、基数排序是稳定的;选择、快速、堆排序是不稳定的。
展开解析
稳定性在多关键字排序时很关键:先按次要键排序,再按主键做稳定排序,次要键的顺序就被保留下来,SQL 的 ORDER BY a, b 效果可以这样叠加实现。判断算法是否稳定,看交换是否可能跨过相等元素:选择排序交换最远位置会打乱相等元素顺序;快排划分时元素会越过 pivot 两侧移动;堆排序父子交换间隔大,同样不保序。易错点:插入排序只有"严格小于才前移"时才稳定,写成 ≤ 就破坏了;归并排序合并时左右相等要先取左边。不稳定的算法可以人为稳定化:把原始下标与值组成二元组作比较键,代价是额外空间。追问:Java 的 Arrays.sort 为何基本类型用快排、对象用 TimSort——基本类型无身份概念,稳定性无意义。