桶排序
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