</pre><pre name="code" class="cpp">
#include <iostream>
using namespace std;
int partition(int* arr, int p, int q){
int pivot = arr[p];
while (p < q) // while中统一使用p < q 而不是p <= q
{
while(pivot <= arr[q] && p < q)
q--;
arr[p] = arr[q];
while(pivot >= arr[p] && p < q)
p++;
arr[q] = arr[p];
}
arr[p] = pivot;//记住把pivot归位
return p;
}
void quick_sort(int* arr, int start, int end){
if(start >= end) return; //递归出口
int pos = partition(arr, start, end);
quick_sort(arr, start, pos - 1);
quick_sort(arr, pos + 1, end);
}
int main(){
int arr[] = { 3, 5, 6 ,8, 2, 1, 9, 4, 0, 7};
quick_sort(arr, 0, 9);
for(int i = 0; i < 10; i++){
cout << arr[i] << " ";
}
system("PAUSE");
}
别人的快排