数据结构排序算法之快速排序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构排序算法之
快速排序
●算法介绍
快速排序也是交换类排序的一种。快速排序是选择一个数据作为枢纽,将啊序列分为两部分,枢纽的一边比它小(至少不大于),另一边比它大(至少不小于)。
●执行流程
原始序列:23 45 12 90 78 56
I J
进行第一趟排序,选择23作为枢纽,整个过程是一次交替扫描的过程
1)使用最后一个元素J=56开始从右向左扫描
23 45 12 90 78 56 56>23不交换,J--
I J
23 45 12 90 78 56 78>23 J--
I J
23 45 12 90 78 56 12<23 交换I++
I J
12 45 90 78 56 45>23 交换J--
I J
12 45 90 78 56 此时I=J 所以这个位置为枢纽的位置
IJ
12 23 45 90 78 56 一趟排序结束
2) 然后从枢纽的位置开始分为两部分,按照同样的方法进行排序即可,也就递归。
●示例代码
●执行结果
ky@ky-S910-X31E:~/libz/628$ gcc quicksort.c -oquick
./quick
●性能分析
本算法的时间复杂度是n的平方,空间复杂度是O(1)。
更多内容请关注个人文库/p/helpylee