快排的思想运用了分治,就是经过一趟排序后,前面部分的数都比后面部分的数小(从小到大排序),运用二分,递归,然后再对这两部分再进行一趟排序
代码如下:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
typedef long long ll;
void qsort(int a[], int l, int r) {
int i = l, j = r, key = a[i];
if(i < j) {
while(i < j) {
while(i < j && a[j] > key)
--j;
if(i < j) {
a[i] = a[j];
++i;
}
while(i < j && a[i] < key)
++i;
if(i < j) {
a[j] = a[i];
--j;
}
}
a[i] = key;
qsort(a, l, i-1);
qsort(a, i+1, r);
}
}
int main()
{
int a[9] = {57, 68, 59, 52, 72, 28, 96, 33, 24};
qsort(a, 0, 8);
for(int i=0; i<9; ++i)
printf("%d ", a[i]);
printf("\n");
return 0;
}