排序算法,搜索

排序算法的稳定性

比如我对(3,1)(3.7)(4,2)(4,4)按照第一个元素的大小排序

稳定的排序,(3,1)(3.7)(4,2)(4,4)

不稳定的排序,(3,7)(3.1)(4,4)(4,2)#它改变了原有的次序


冒泡排序(Bubble Sort)

把最大的放到最后

稳定


选择排序(Select Sort)

找最小的元素,把这个元素放到最前面

不稳定


 

插入排序(Insert Sort)

从前往后,一个个看元素,看这个元素在它前面的元素构成的序列里面排在哪里,插进去

稳定


 

希尔排序(Shell Sort)

改进的插入排序,按gap值分组插入排序

不稳定,时间复杂度n^2


 

快速排序(Quick sort)

时间复杂度n*log2n

不稳定,跳着换的。可能54在头一个,放到了别的54后面

 


 

 

归并排序(Merge Sort)

时间复杂度n*logn

稳定,如果写的代码是把等于的判断放在左边的话,那么就是如果左和右相等,是左边出去,那就是稳定的。

归并时间上不错,也稳定,但是它空间上面是新的空间,不是原来的空间上处理。


 

 

二分查找(折半查找)

要求查找的序列是有序的,是可以用下标索引的。

 二分查找的时间复杂度,最优是O(1)最坏是O(logn)

posted @ 2024-01-07 19:20  静听微风tom  阅读(3)  评论(0编辑  收藏  举报