计算式排序之计数排序
#include<stdio.h>
#include<stdlib.h>
#define len 10
void CountingSort(int* A,int A_Len,int * B,int k);
int main()
{
int A[10]={1,5,9,0,7,8,6,4,3,2};
int* B=(int*)malloc(sizeof(int)*len);
CountingSort(A,len,B,9);
for(int i=0;i<len;i++)
{
printf("%d ",B[i]);
}
return 0;
}
void CountingSort(int* A,int A_Len,int * B,int k)
{
int* C=(int*)malloc(sizeof(int)*(k+1));
int i,j;
//初始化C数组全部为0
for(i=0;i<k+1;i++)
{
C[i]=0;
}
//开始计数
for(j=0;j<A_Len;j++)
{
C[A[j]]=C[A[j]]+1;
}
//累加
for(i=1;i<k+1;i++)
{
C[i]=C[i-1]+C[i];
}
//输出
for(i=A_Len-1;i>=0;i--)
{
B[C[A[i]]-1]=A[i];
C[A[i]]=C[A[i]]-1;
}
}
亲爱的听众朋友我是你的代班DJ

浙公网安备 33010602011771号