欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

不稳定的排序算法是没有使用价值的

终极管理员 知识笔记 81阅读

排序算法稳定性有什么好处?

答:其次,说一下稳定性的好处。 排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。 基数排序就 是这样,先按低位排序,逐次按高位排序,低位相同的元素其顺序再高位也相同时是不会改变的。

什么是排序算法?

答:排序算法在一趟选择中,如果当前元素比一个元素小,而该小的元素又出现在一个和当前元素相等的元素后面,那么交换后稳定性就被破坏了。 光说可能有点模糊,来看个小实例:858410,第一遍扫描,第1个元素8会和4交换,那么原序列中2个8的相对前后顺序和原序列不一致了,所以选择排序不稳定。

基数排序是稳定的吗?

答:基数排序基于分别排序,分别收集,所以是稳定的。 排序算法在一趟选择中,如果当前元素比一个元素小,而该小的元素又出现在一个和当前元素相等的元素后面,那么交换后稳定性就被破坏了。 光说可能有点模糊,来看个小实例:858410,第一遍扫描,第1个元素8会和4交换,那么原序列中2个8的相对前后顺序和原序列不一致了,所以选择排序不稳定。

稳定排序和插入排序有什么区别?

答:能够节约时间,稳定性算法会减少一次交换时间(但多了不交换这个限制后,稳定排序的冒泡/插入/选择都是O (n^2);而不稳定排序快排/堆排却是O (nlogn));2. 排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用; 冒泡排序就是把小的元素往前调或者把大的元素往后调。 比较是相邻的两个元素比较,交换也发生在这两个元素之间。 所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。 插入排序是在一个已经有序的小序列的基础上,一次插入一个元素。

声明:无特别说明,转载请标明本文来源!