|
|
1鱼币
本帖最后由 心空草 于 2012-4-16 19:05 编辑
#include <stdio.h>
#include <math.h>
#include <malloc.h>
#define length 6
//#define max 5
int MAX(int A[]);
void COUNTING_SORT(int A[],int B[],int k);
void main()
{
int a[length],b[length],i,max;
printf("请输入%d个数据:\n",length);
for(i=0;i<length;i++)
scanf("%d",&a[i]);
printf("排序前的顺序:");
for(i=0;i<length;i++)
printf("%5d",a[i]);
max=MAX(a);
printf("\n");
COUNTING_SORT(a,b,max);
printf("排序后的顺序:");
for(i=1;i<=length;i++)
printf("%5d",b[i]);
printf("\n");
}
int MAX(int A[])
{
int max,i,temp;
max=A[0];
for(i=1;i<length;i++)
if(max<A[i])
{
temp=max;
max=A[i];
A[i]=temp;
}
return max;
}
void COUNTING_SORT(int A[],int B[],int k)
{
int i,*C,j;
C=(int *)malloc(k*sizeof(int));
for(i=0;i<=k;i++)
C[i]=0;
for(i=0;i<length;i++)
C[A[i]]=C[A[i]]+1;
for(i=1;i<=k;i++)
C[i]=C[i]+C[i-1];
for(j=length-1;j<=0;j--)
{
B[C[A[j]]]=A[j];
C[A[j]]=C[A[j]]-1;
}
return;
}
|
最佳答案
查看完整内容
心空草 发表于 2012-4-16 18:12
不好意思。这串代码是我从的VC直接复制过来的,复制完后没怎么去检查,有一些细节在这里没有显示出来,很 ...
#include
//#include
//#include
#define length 6
int MAX(int A[]);
void COUNTING_SORT(int A[],int B[],int k); //A[]为未排序的数组,B[]为排好序的数组,k为数组长
void main()
{
int a[length],b[length],i,max;
printf("请输入%d个数据:\ ...
|