#includeusing namespace std;void QuickSortCore(int a[], int start, int end){ if (start > end) return; int key = a[start]; int blank = start; int left = start + 1; int right = end; while(left <= right){ //维护left right blank key if (blank < left){ if (key <= a[right]){ right--; continue; } else{ a[blank] = a[right]; blank = right--; continue; } } else if (blank > right){ if (key >= a[left]){ left++; continue; } else{ a[blank] = a[left]; blank = left++; continue; } } } a[blank] = key; QuickSortCore(a, start, blank - 1); QuickSortCore(a, blank + 1, end);}void QuickSort(int a[], int len){ if (!a || len < 0) return; QuickSortCore(a, 0, len-1);}int main(){ int a[] = { 3,6,5,81,94,53,0,12,4,2,4,2,1}; QuickSort(a, 13); return 0;}
EOF