数据结构--快速排序

快速排序算法是一种经典的排序算法。

基本思想:

选择一个基准元素(通常选择第一个元素或者最后一个元素),通过一趟排序将待排序序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置;然后再递归地排序划分的两部分。

 

因此本质上快速排序是一种分治算法。

由于在排序的过程中,各元素与基准元素比较大小,若小于基准元素则与基准元素交换位置,因此该算法是不稳定的排序算法。

 

当每一趟排序进行后,选择的基准元素恰好最大或者最小时,就把序列分成极端不均衡的两部分,即一部分为空,另一部分为待排序序列的元素个数减1,此时算法处于最坏情况,其时间复杂度为O(n2)。

当输入数据基本有序或者所有元素值相等时,不论选择第一个元素还是最后一个元素作为基准元素,都恰好把序列分成极端不均衡的两部分,快速排序算法具有最坏情况下的时间复杂度。         

   

所以快速排序算法是不稳定的,正常情况下时间复杂度为O(nlgn),最坏情况下为O(n2),空间复杂度为O(1)。

 

代码实现1.6 快速排序 | 菜鸟教程 (runoob.com)

posted @ 2022-05-09 22:02  我试试这个昵称好使不  阅读(36)  评论(0编辑  收藏  举报