标签: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