数据结构笔记--排序总结

来源:互联网 发布:node 运行js文件 编辑:程序博客网 时间:2024/05/19 13:27

看完这个如果你的选择题类似稳定性,辅助空间,时间复杂度还会做错的话我就无语了!
1.稳定性总结:一句话搞定:本人考研无聊中,那么就快(快速排序)希(希尔排序)选(选择排序)一堆(堆排序)妹妹来聊!!   这里面都是不稳定的,其他的就自然都是稳定的了!
2.时间复杂度总结:1.在军训的时候,教官说了一句话: 快(快速排序)希(希尔排序)以nlogn的速度归(归并排序)队(堆排序)!!          在这句话里面他们的复杂度都是O(nlogn)!!
                            2.冒泡冒的好就是O(n),冒泡冒的不好就是O( n^2)
                            3.直接插插得好就是O(n),插得不好就是O( n^2)
               其中插得好冒的好分别对应最好的时间复杂度,插得不好冒得不好分别对应最坏时间复杂度,而平均时间复杂度对应最坏的!
3.其他的总结:1.你想快速从一大堆恐龙里面挑出几个漂亮的妹妹吗?那就使用堆排序吧!  对应题目:从10000个元素里面选择前五个最小的!
                     2.当待排序的数据基本有序,请使用直接插入排序!
                     3.大家好,我是快速排序,如果你要用我的话,请最好把你的数据弄得最乱,这个我才可以显示出我的才能,如果你已经差不多有序了,请不要来找我,实在大材小用,可以联系我的徒弟直接插入排序!这句话还有一层意思也就是说快速排序是所有排序里面平均性能最好的一个!
4.辅助空间: 只需记住几个特殊的就好,归并O(N),快速O(logn)! 基数排序O(r+d)  其他的就自然全部是1了!

二、内部排序常用算法比较          

排序方法

平均时间

最坏情况

辅助存储

简单排序

O(n2)

O(n2)

O(1)

快速排序

O(nlogn)

O(n2)

O(logn)

堆排序

O(nlogn)

O(nlogn)

O(1)

归并排序

O(nlogn)

O(nlogn)

O(n)

基数排序

O(d(n+rd))

O(d(n+rd))

O(rd)

希尔排序

O(n3/2)

O(n2)

O(1)