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

快速排序

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

标签:while   blog   quicksort   稳定性   col   执行   空间   算法   位置   

核心代码

 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)

      稳定性:不稳定

快速排序

标签:while   blog   quicksort   稳定性   col   执行   空间   算法   位置   

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

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