C语言——计数排序

思路:利用顺序表的下标去记录数据,开一个区间大小为(最大值-最小值+1)的计数数组,将数组中的数字大小一一对应,遍历一遍数据,在对应下标的位置统计给数出现的次数,统计完后再遍历一次计数数组,将数组中不为0的对应下标变回对应的数字再赋值给原数组

C语言——计数排序_第1张图片

 

void CountSort(int* a,int n)
{
	//找到数组内的最小最大值
	int i,j;
	int max,min;
	int* countA;
	max = min =a[0];
	for(i=0;i max)
			max = a[i];

		if(a[i] < min)
			min = a[i];
	}


	//计数统计
	//使用calloc可以默认初始化每位都为0
	countA = (int*)calloc(sizeof(int),max-min+1);
	if(countA == NULL)
	{
		perror("calloc fail");
		exit(-1);
	}
	//计数
	for(i=0;i

你可能感兴趣的:(c语言,数据结构,算法)