题目:第一行输入整数,表示数组大小,第二行输入一个数组,第三行输入两个整数s,m,要求将数组中的元素从 s到m降序输出,要求利用快速排序法。
源程序:
#include <stdio.h>
#include <math.h>void QuickSort(int a[],int s,int m);
int main(){
int n,a[105],s,m;
int i,j,k;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d%d",&s,&m);
QuickSort(a,s,m);
for(i=0;i<s;i++)
printf("%d ",a[i]);
for(i=s;i<=m;i++)
printf("%d ",a[i]);
for(i=m+1;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
void QuickSort(int a[],int s,int m){
int i;
int low,high,x;
if(s<m){
low=s,high=m;
x=a[low];
while(low<high){
while(low<high&&a[high]<=x)
high--;
if(low<high)
a[low++]=a[high];
while(low<high&&a[low]>x)
low++;
if(low<high)
a[high--]=a[low];
}
a[low]=x;
QuickSort(a,s,low-1);
QuickSort(a,low+1,m);
}
}
运行结果: