#include<stdio.h>
void qusort(int s[],int start,int end) {
int i,j;
i=start;
j=end;
s[0]=s[start];/*第一个数作为基准数*/
while(i<j) {
while(i<j&&s[0]<s[j])
j--;/*指针j向左移动,发现比基准数小的数*/
if(i<j) {
s[i]=s[j];
i++;
}
while(i<j&&s[i]<=s[0])
i++;/*指针i向右移动,发现比基准数大的数*/
if(i<j) {
s[j]=s[i];
j--;
}
}
s[i]=s[0];/*当i与j指向同一位数字时,该位置是基准数应当存在的位置*/
if(start<j)
qusort(s,start,j-1);/*上一次基准数左边的队列再次进行快速排序*/
if(i<end)
qusort(s,j+1,end);/*上一次基准数右边的队列再次进行快速排序*/
}
int main() {
int a[11],i,j;
printf("请输入十个数据:\n");
for(i=1; i<=10; i++)
scanf("%d",&a[i]);
printf("原始数据:\n");
for(i=1; i<11; i++)/*从第一位开始,0位留给基准数*/
printf("%5d",a[i]);
qusort(a,1,10);
printf("\n排序后顺序:\n");
for(i=1; i<11; i++)
printf("%5d",a[i]);
printf("\n");
scanf("%d",&j);
}
快速排序
最新推荐文章于 2021-11-19 16:57:43 发布