数据结构--快速排序

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

基本思想:

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

 

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

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

 

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

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

   

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

 

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

posted @   我试试这个昵称好使不  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示