参考:https://blog.csdn.net/qq_42524288/article/details/119516084
桶排序是一种空间换时间的算法。
简单的桶数组排序,要新建一个数组,其大小是待排序数字的最大值+1。
对于放着 5, 3,5,2,8 数组arr进行排序:
- (1)遍历数组arr,找到待排序数组中的最大值max;
- (2)新建一个数组,空间比最大值max大一些;
- (3)遍历待排序的数组arr,将数值做为新数组arr2的下标,进行自加;
- (4)遍历新数组arr2,哪个大于1就输出该处下标即可。
解释:第三步走完,如下图,arr2中,arr2[2],ar2r[3],arr2[8]处的值分别是1,arr[5]处的值是2,然后进行第四步,遍历数组arr2,遇到不为0的就打印下标,就可以完成排序。
复杂的桶数组排序,是一个集合中放好多桶数组,计算桶的数组的数量,分别将一定范围的值放到桶数组中。
- (1)找出待排序数组中的最大值max和最小值min;
- (2)使用ArrayList做为桶,然后里面还放ArrayList桶,大小为:(max-min)/arr.length+1;
- (3)遍历待排序的数组,将数据放到桶中;
- (4)将各个桶中数据进行排序;
- (5)遍历桶数组,输出。