超级精简的快排,一看就懂
直接上代码
#include <iostream>
using namespace std;
//index左边比他小,右边比他大
int index(int begin, int end, int* arr) {
int tmp = arr[begin];
while (begin < end) {
while (begin<end&&tmp <= arr[end]) end--;
if(begin<end)arr[begin++] = arr[end];
while (begin<end && tmp > arr[begin]) begin++;
if (begin < end)arr[end--] = arr[begin];
}
arr[begin] = tmp;
return begin;
}
//递归
void quick_sort(int begin,int end,int *arr) {
if (begin < end) {
int ind = index(begin, end, arr);
quick_sort(begin, ind - 1, arr);
quick_sort(ind + 1, end, arr);
}
}
int main()
{
int a[10] = { 1,5,7,9,2,1,4,3,55,4 };
quick_sort(0, 9, a);
for (int i = 0; i < 10; i++) {
cout << a[i]<<" ";
}
cout << endl;
system("pause");
return 0;
}