基于单链表实现的桶排序

桶排序

1.问题描述:使用桶排序算法对控制台输入的数字进行排序

2. 桶排序涉及到几个问题:

1.桶的大小,这里我们可以根据输入的元素的个数来确定桶的大小

2.怎么确定当前元素进入哪一个桶,这里我们使用到的是通过一个哈希函数来进行计算


int index =  (element * length) / (max + 1);


element为当前元素的值,length为桶的大小,max为数组中最大元素的值

③因为输入的数据是随机的,所以有可能在一个桶中分布着好几个数据

所以我们可以使用动态的数据结构来存储,考虑到插入的操作是比较频繁的,所以这里我们使用链表来进行插入元素,并且在一个桶中维持从小到大的顺序

在一开始的时候我们扫描桶的元素,找到第一个比当前需要插入的元素大或者相等的的元素,那么将这个元素往前插入就可以了
 

了解了上面的问题就可以写代码了

代码:

public class ListNode {
	 int data;
	 ListNode next;
	
	public ListNode(int data){
		this.data = data;
	}
}
public class Util {
	public static int maxOf(int[] arr)
	{
		int max = arr[0];
		for(int i = 1;i<arr.len
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值