排序算法的稳定性
九大排序
计数排序 基数排序 桶排序
选择排序 插入排序 冒泡排序
堆排序 归并排序 快速排序
什么是排序的稳定性
如果元素大小相同
排序后的相对位置不变
不稳定
堆排序 快速排序 选择排序 不是稳定的
稳定
基数排序 冒泡排序 插入排序 归并排序 计数排序 桶排序
选择排序
在每次将最小的元素拿到最前面和未排序的序列的第一个元素进行交换的时候发生了对原序列的破坏 失去了稳定性
快速排序
Swap的时候有可能让两个本来相等的元素交换位置 破坏了原序列的稳定性
堆排序
比如:3 27 36 27,
如果堆顶3先输出,则,第三层的27(最后一个27)跑到堆顶,然后堆稳定,继续输出堆顶,是刚才那个27,这样说明后面的27先于第二个位置的27输出,不稳定。
基数排序 计数排序 桶排序
基数 进入每个桶的顺序和一开始相对位置相同
计数 下标映射偏移和相对位置相同
桶 和基数同理
冒泡排序 基于比较换到一侧 相等的话不会交换位置 保证相对的有序
插入排序 因为如果两个元素相等不会发生交换 先插入的放在前面 保证相对位置不变
归并排序 相等则不发生交换 保证相对位置不变
哭泣,才发现稳定性的定义是这样的,我一直以为稳定性是数据不同但是保证时间相同,比如快排最坏复杂度是n方,长知识了QWQ