quick sort(重复数版)
Posted endenvor
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了quick sort(重复数版)相关的知识,希望对你有一定的参考价值。
针对数组中有大量重复数优化
example
// 1,3,4,7,7,7,17,11,1,7
1 void QuickSort(int* arr, int from, int to); 2 void QSort(int* arr, int size); 3 4 void QuickSort(int* arr, int from, int to) 5 { 6 if(from >= to) return; 7 int pivot = arr[to]; 8 // save the numbers of who‘s value equals pivot 9 int numsOfPivot = 0; 10 int border = from; 11 // b i 12 // 1,3,4,7,7,7,17,11,1,7 13 for(int i = from; i <= to; i++) 14 { 15 if(arr[i] < pivot) 16 { 17 int temp = arr[i]; 18 arr[i] = arr[border]; 19 arr[border - numsOfPivot] = temp; 20 ++border; 21 } 22 else if(arr[i] == pivot) 23 { 24 ++numsOfPivot; 25 arr[i] = arr[border]; 26 ++border; 27 } 28 } 29 // refill the duplicate of pivot at the behind of border 30 while(numsOfPivot != 0) 31 { 32 arr[border-numsOfPivot] = pivot; 33 --numsOfPivot; 34 } 35 QuickSort(arr,from,border-2-numsOfPivot); 36 QuickSort(arr,border,to); 37 } 38 39 void QSort(int* arr, int size) 40 { 41 QuickSort(arr, 0, size-1); 42 }
以上是关于quick sort(重复数版)的主要内容,如果未能解决你的问题,请参考以下文章
QUICK-SORT 实现中的 ArrayIndexOutofBound
26.Qt Quick QML-RotationAnimationPathAnimationSmoothedAnimationBehaviorPauseAnimationSequential(代码片段