桶排序算法

//桶排序算法
void test()
{
	int arr[8] = {4,1,2,3,5,11,2,5};
	
	//先找出数组最大值,重新定义一个空组数,数组的个数需要为数组arr的最大值加1
	int ret[12] = {0};

	//数组的值 0 0 0 0 0 0 0 0 0 0 0  0  0
	//数组的k  0 1 2 3 4 5 6 7 8 9 10 11 12
 
	for (int i =0;i<8;i++)
	{
		//循环数组arr 将数组arr的值当做数组ret的key ret值为数组arr的值出现的次数
		ret[arr[i]] = ret[arr[i]] +1;
	}
	
	//循环数组ret 
	for (int k=0;k<12;k++)
	{
		if (ret[k] > 0)  //如果ret的值大于0 那么代表 K存在arr数组里面
		{
			int t =ret[k]; //定义一个局部变量,如果K出现2次在arr数组里,需要循环输出。

			while(t>0){
				printf("%d\n",k); //最后输出K 也就是排序好的arr数组
				t--;
			}
		
		}
	}


}
最后的结果为
1  2 2 3 4 5 5 11
上一篇
冒泡排序
发表评论 / Comment

用心评论~