Java教程

桶排序

本文主要是介绍桶排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

桶排序

桶排序的思想是,若待排序的记录的关键字在一个明显有限范围内时,可设计有限个有序桶,每个桶只能装与之对应的值,顺序输出各桶的值,将得到有序的序列。简单来说,在我们可以确定需要排列的数组的范围时,可以生成该数值范围内有限个桶去对应数组中的数,然后我们将扫描的数值放入匹配的桶里的行为,可以看作是分类,在分类完成后,我们需要依次按照桶的顺序输出桶内存放的数值,这样就完成了桶排序。

代码+思路

#include<stdio.h>
int main()
{	
	int a[10]={0};	//以10个桶为例,必须将10个桶初始值设为0
	int n;			//要输入的数字个数 
	scanf("%d",&n);
	int i,j;
	for(i=0;i<n;i++)
	{
		int key;
		scanf("%d",&key);
		a[key]++;	//输入key,key会放在a[key]中,同时a[key]++记录了该桶存放的数据+1 
		
	}
	for(i=0;i<10;i++)	//这里表示将这10个桶里面的数全部输出,如果写n,则输出到n桶就停止了,如果有比n要大的数字即存放在了n桶后面就无法输出 
		for(j=0;j<a[i];j++)	//小于a[i] ,一个桶里面可能有好几个一样的数字 
			printf("%d ",i);
	return 0;
}

这篇关于桶排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!