快速排序是一种经典的分治算法,其实也很简单,题目给出的算法有一点小错误而已,修正之后的代码如下,自行理解。
#include <iostream>
#define N 10 //定义常量N=10
using namespace std;
int qsort(int p[], int start, int end)
{
int temp;
int i = start;
int j = end;
int mid = p[(start + end) / 2];
while(i < j)
{
while(p[i] < mid)
i++;
while(p[j] > mid)
j--;
if(i <= j)
{
temp = p[i];
p[i] = p[j];
p[j] = temp;
i++;
j--;
}
}
if(j > start)
qsort(p, start, j);
if(i < end)
qsort(p, i, end);
}
int Printarray(int data[], int size)
{
int i;
for(i = 0; i < size; i++)
cout<<data[i]<<" ";
cout<<endl;
}
int main()
{
int array[N];
for(int i = 0; i < N; i++)
cin>>array[i];
qsort(array, 0, N-1);
Printarray(array, N);
return 0;
}