请教数字排序问题,程序语言不限

来源:百度知道 编辑:UC知道 时间:2024/06/08 17:03:41
10个待排序的记录
关键字:256,301,751,129,937,863,742,694,076,438
请用快速排序的方法,从小到大的排列

我还没积分,谢谢各位老大

#include "stdio.h"
void quicksort(int data[], int low,int high)
{/*用快速排序方法数组元素data[low..high]作排序*/
int i,pivot,j;
if(low<high)/*以数组的第一个元素为基准进行划分*/
{
pivot=data[low];
i=low;
j=high;
while(i<j)/*从数组的两端交替地向中间扫描*/
{
while(i<j&&data[j]>=pivot)j--;
if(i<j) data[i++]=data[j];/*比枢轴元素小者移到低下标端*/
while(i<j&&data[i]<=pivot) i++;
if(i<j)data[j--]=data[i];/*比枢轴元素大者移到高下标端*/
}
data[i]=pivot;/*枢轴元素移到正确的位置*/
quicksort(data,low,i-1);/*对前半个子表递归排序*/
quicksort(data,i+1,high);/*对后半个子表递归排序*/
}
}
void main()
{
int a[]={256,301,751,129,937,863,742,694,076,438};
quicksort(a,0,9);
for(int i=0;i<10;i++)
{
printf("%d ",a[i]);
}
}