基本思路:
快速排序,数组冲两边出发。
首先取一个关键字。
在第一次排序后。 大于和小于 关键字的各在 关键字两边。
然后在对两边 重复上面步骤,取关键字,排序。
直到最后分到只有一个数。
C语言实现:
#include <stdio.h>
void quickSort(int a[],int low,int high){
int i = low;
int j = high;
a[0] = a[low];
while(i<j){
while(i<j&&a[0]<=a[j]){
j--;
}
if(i<j){
a[i] = a[j];
i++;
}
while(i<j && a[i]<a[0]){
i++;
}
if(i<j){
a[j]=a[i];
j--;
}
}
a[i] = a[0];
if(low<i-1){
quickSort(a,low,i-1);
}
if(j+1<high){
quickSort(a,j+1,high);
}
}
void print(int a[] ,int n)
{
for (int i = 1;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
int main(int argc, char *argv[])
{
int a[]=
{
0,59,48,75,98,86,23,37,60
};
print(a,9);
quickSort(a,1,8);
print(a,9);
return 0;
}