码迷,mamicode.com
首页 > 编程语言 > 详细

18. 蛤蟆的数据结构进阶十八排序实现之快速排序

时间:2015-08-21 00:16:11      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:

18. 蛤蟆的数据结构进阶十八排序实现之快速排序

本篇名言:“一个人做点好事并不难,难的是一辈子做好事,不做坏事。--毛泽东”

我们最后来看下快速排序,以及各个排序之间的一些信息汇总。

 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47817933

1.  快速排序

快速排序由C. A. R.Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列

 

2.  代码实现

先通过函数partition函数将表一分为二(交替先给中间扫描,具体如果分法,请看源码)。

然后递归对低子表递归排序  ,递归对高子表递归排序 。

实现运行如下图1

 技术分享

 

3.  各排序算法汇总

各种排序的稳定性,时间复杂度和空间复杂度总结,如下图2

技术分享

 我们比较时间复杂度函数的情况,如下图3

技术分享

                            时间复杂度函数O(n)的增长情况,如下图4

技术分享

所以对n较大的排序记录。一般的选择都是时间复杂度为O(nlog2n)的排序方法。

4.  源码

#include"stdio.h"

 

void print(inta[],intn){ 

         for(intj= 0; j<n; j++){ 

                   printf("%d",a[j]); 

         } 

 

void swap(int *a,int *b

         inttmp = *a

         *a =*b

         *b =tmp; 

 

int partition(inta[],intlow, int high

         intprivotKey = a[low];                            //基准元素 

         while(low< high){                                   //从表的两端交替地向中间扫描 

                   while(low< high && a[high]>= privotKey) --high//high所指位置向前搜索,至多到low+1位置。将比基准元素小的交换到低端 

                   swap(&a[low],&a[high]); 

                   while(low< high && a[low]<= privotKey ) ++low

                   swap(&a[low],&a[high]); 

         } 

         //print(a,10); 

         return low

 

 

void quickSort(inta[],intlow, int high){ 

         if(low< high){ 

                   intprivotLoc = partition(alowhigh);  //将表一分为二 

                   quickSort(alow,  privotLoc -1);          //递归对低子表递归排序 

                   quickSort(a,   privotLoc + 1,high);        //递归对高子表递归排序 

         } 

 

int main(){ 

         inta[10] = {3,1,5,7,2,4,9,6,10,8}; 

         printf("初始值:"); 

         print(a,10); 

         quickSort(a,0,9); 

         printf("\n排序结果:\n");

         print(a,10); 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

18. 蛤蟆的数据结构进阶十八排序实现之快速排序

标签:

原文地址:http://blog.csdn.net/notbaron/article/details/47817933

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!