排序算法,搜索
排序算法的稳定性
比如我对(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)