不稳定的排序
墨初 知识笔记 140阅读
各排序算法的稳定性是什么?
答:各排序算法的稳定性:. 1、堆排序、快速排序、希尔排序、直接选择排序 不是稳定 的排序算法;. 2、基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序 是稳定 的排序算法。. 一. 冒泡排序. 1、小的元素往前调或者把大的元素往后调;. 2、比较是相邻的两个元素比较,交换也发生在这两个元素之间;. 3、 稳定排序算法。. 二.
稳定排序和插入排序有什么区别?
答:能够节约时间,稳定性算法会减少一次交换时间(但多了不交换这个限制后,稳定排序的冒泡/插入/选择都是O (n^2);而不稳定排序快排/堆排却是O (nlogn));2. 排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用; 冒泡排序就是把小的元素往前调或者把大的元素往后调。 比较是相邻的两个元素比较,交换也发生在这两个元素之间。 所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。 插入排序是在一个已经有序的小序列的基础上,一次插入一个元素。
基数排序是稳定的吗?
答:基数排序基于分别排序,分别收集,所以是稳定的。 排序算法在一趟选择中,如果当前元素比一个元素小,而该小的元素又出现在一个和当前元素相等的元素后面,那么交换后稳定性就被破坏了。 光说可能有点模糊,来看个小实例:858410,第一遍扫描,第1个元素8会和4交换,那么原序列中2个8的相对前后顺序和原序列不一致了,所以选择排序不稳定。
为什么希尔排序不稳定?
答:希尔排序是按照不同步长对元素进行插入排序,一次插入排序是稳定的,不会改变相同元素的相对顺序,但在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动,稳定性就会被破坏,所以希尔排序不稳定。