
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
下面昆明达内导师跟大家分享:算法之排序的稳定性与复杂度,那我们先看什么是稳定性?稳定性:若待排序的序列中,存在多个具有相同关键字的记录,经过排序,这些记录的相对次序保持不变,则称该算法是稳定的;若经排序后,记录的相对次序发生了改变,则称该算法是不稳定的。
稳定性的好处:排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序,逐次按高位排序,低位相同的元素其顺序再高位也相同时是不会改变的。另外,如果排序算法稳定,可以避免多余的比较;
不稳定:
选择排序(selection sort)—O(n2)
快速排序(quicksort)—O(nlogn)平均时间, O(n2)最坏情况;对于大的、乱序串列一般认为是最快的已知排序
堆排序(heapsort)—O(nlogn)
选择排序(selection sort)—O(n2)
希尔排序(shell sort)—O(nlogn)
基数排序(radix sort)—O(n·k);需要O(n)额外存储空间(K为特征个数)
稳定:
插入排序(insertion sort)—O(n2)
冒泡排序(bubble sort)—O(n2)
归并排序(merge sort)—O(n log n);需要O(n)额外存储空间
二叉树排序(Binary tree sort)—O(nlogn);需要O(n)额外存储空间
计数排序(counting sort)—O(n+k);需要O(n+k)额外存储空间,k为序列中Max-Min+1
桶排序(bucket sort)—O(n);需要O(k)额外存储空间。
更多IT行业热讯,请关注昆明达内官网:http://km.tedu.cn