#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int mydata[20]={0,52,49,80,36,14,58,61,97,23,75};
int high,low;
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void printf_array(int *a,int n)
{
int i;
for(i=1;i<=n;i++)
{
printf( "%d\t ",a[i]);
}
printf("\n");
}
int partition(int *a,int low,int high)
{
int key;
key=a[low];
//printf("key=%d\n",key);
//printf_array(mydata,high);
while(low<high)
{
while(low<high&&a[high]>=key)
high--;
a[low]=a[high];
while(low<high&&a[low]<=key)
low++;
a[high]=a[low];
}
a[low]=key;
return low;
}
void fastsort(int *a,int low,int high)
{
int p;
if(low<high)
{
p=partition(a,low,high); //将[low,high]一分为2
fastsort(a,low,p-1); //低段排序
fastsort(a,p+1,high); //高段排序
}
}
int main()
{
int location;
printf_array(mydata,10);
//location=partition(mydata,1,10);
fastsort(mydata,1,10);
printf_array(mydata,10);
return 1;
}
快速排序
最新推荐文章于 2022-12-06 12:37:54 发布