首页 > 编程语言 > 详细

快速排序

时间:2017-10-20 12:28:12      阅读:249      评论:0      收藏:0      [点我收藏+]

核心代码

 1 int Sort(int arr[], int nLow, int nHigh)
 2 {
 3     int temp = arr[nLow];    
 4 
 5     assert(arr!=NULL && nLow<=nHigh);
 6     
 7     while(nLow < nHigh)
 8     {
 9         //从后往前找第一个比标准值小的
10         while(nLow < nHigh)
11         {
12             if(arr[nHigh] < temp)
13             {
14                 arr[nLow] = arr[nHigh];
15                 ++nLow;
16                 break;
17             }
18             else
19             {
20                 --nHigh;
21             }
22         }
23         
24         //从前往后找第一个比标准值大的
25         while(nLow < nHigh)
26         {
27             if(arr[nLow] > temp)
28             {
29                 arr[nHigh] = arr[nLow];
30                 --nHigh;
31                 break;
32             }
33             else
34             {
35                 ++nLow;
36             }
37         }
38     }
39 
40     //标准值放入
41     arr[nLow] = temp;
42 
43     //返回标准值位置
44     return nlow
45 }
46 
47 void QuickSort(int arr[], int nLow, int nHigh)
48 {
49     int nStandard;
50 
51     assert(arr!=NULL && nLow<=nHigh);
52     if(nLow == nHigh)
53     {
54         return;
55     }
56 
57     //找标准值位置
58     nStandard = Sort(arr, nLow, nHigh);
59     
60     //将数组分成两部分,分别执行以上操作
61     QuickSort(arr, nLow, nStandard-1);
62     QuickSort(arr, nStandard+1, nHigh);
63 }

算法分析:

  最好时间复杂度:O(nlog2(n))

  平均时间复杂度:O(nlog2(n))

  最坏时间复杂度:O(n^2)    有序

    空间复杂度:log2(n)

      稳定性:不稳定

快速排序

原文:http://www.cnblogs.com/chen-cai/p/7698580.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!