快速排序

最受欢迎的排序方法,时间复杂度为O(NlogN)

大体思路 选择一个基准数,使整个数列左边的数字比基准数小,右边的数比基准数大,然后对基准数两边的数列进行递归处理。

最坏情况每次比较的基准数都是该数列中最小的或者最大的,那么该区间则只比上一次比较的区间数字少一个,时间复杂度为O(n平方)

最好情况每次比较的基准数都是该数列最中间的数,复杂度为O(NlogN)

快速选择排序

选择topk大或者小

改变递归后选择的区间,只要保证n-k的值对应下标在该区间,就可以只对该区间进行比较递归处理

归并排序

迭代加递归

分而治之,治完了并起来,然后两两按顺序比较

无论情况好坏都是O(NlogN)

比较

快速排序在原数组上操作,空间复杂度较低,而归并排序需要进行大量的复制,因此快速排序即使不稳定, 在实际使用中也比归并排序快

posted on 2022-09-14 15:38  JohnWangzx  阅读(15)  评论(0编辑  收藏  举报