计算式排序之计数排序

#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;
	} 
	
	
	
}

  

posted @ 2016-05-16 21:48  LT.C#  阅读(258)  评论(0编辑  收藏  举报