快速排序
程序员文章站
2022-03-24 13:09:05
...
#include<stdio.h>
#define MAX 100
int m=0;
int parition(int *a,int i,int j)
{
int temp;
temp=a[i];
while(i<j)
{
while(i<j&&a[j]>=temp) //从右向左查找比关键字小的数
j--;
if(i<j)
a[i++]=a[j];
while(i<j&&a[i]<=temp) //从左向右查找比关键字大的数
i++;
if(i<j)
a[j--]=a[i];
}
a[i]=temp;
return i;
}
void QuickSort(int a[],int low,int high)
{
int position;
if(low>=high)
return;
else{
m++;
position = parition(a,low,high);
QuickSort(a,low,position-1);
QuickSort(a,position+1,high);
}
}
void InputData(int *a,int *num)
{
int d;
printf("请输入数据以-9999结束:\n");
do{
scanf("%d",&d);
if(d==-9999)
break;
a[(*num)++]=d;
}while(1);
}
void OutputData(int *a,int num)
{
int i;
for(i=0;i<num;i++)
{
printf("%3d",a[i]);
}
printf("\n");
printf("排序趟数:%d",m);
printf("\n");
}
void main()
{
int a[MAX],num=0;
InputData(a,&num);
QuickSort(a,0,num-1);
OutputData(a,num);
}
上一篇: php如何定义超全局变量