实验内容:
在main函数中定义数A[]={52,49,80,36,14,58,61,23,97},调用归并排序函数QuickSort对A[]中的数据进行排序,调试并观察排序过程。
代码如下:
#include "stdio.h"
void QuickSort(int R[],int s,int t)
{
int i=s,j=t;
int tmp=R[s];
if(s<t)
{
while(i!=j)
{
while(i<j&&R[j]>=tmp)
j--;
R[i]=R[j];
while(i<j&&R[i]<=tmp)//注意等号:负责导致等于时没有处理出现错误
i++;
R[j]=R[i];
}
R[i]=tmp;
QuickSort(R,s,i-1);
QuickSort(R,i+1,t);//注意:递归要写在(s<t)的条件里面
}
}
void main()
{
int A[9]={52,49,80,36,14,58,61,23,97};
int l=0,h=8,i=0;
printf("排序前:A[9]=");
for(i=0;i<9;i++)
printf("%d ",A[i]);
QuickSort(A,l,h);
printf("\n排序后:A[9]=");
for(i=0;i<9;i++)
printf("%d ",A[i]);
}
运行结果: