移动排序好玩吗 移动排序玩法简介,
时间:2023-10-08 09:40:45
来源:
浏览:
桶排序的简单理解
详细描述
桶排序的工作原理是,将序列中的元素分配到有限的桶里,每个桶再分别进行排序(使用别的排序算法或者递归使用桶排序),最终合并成结果序列。
桶排序详细的执行步骤如下:
- 找出序列中最小的元素和最大的元素,并计算得到差值范围和映射范围,确定桶的数量;
- 遍历整个序列,将每一个元素移动到对应的桶中;
- 对每一个桶中的元素进行排序,直到所有的桶中元素都有序;
- 合并每一个桶中的元素成为有序序列。
算法图解
问题解疑
桶排序的关键是什么?
桶排序过程中存在两个关键环节:元素到桶的映射规则、排序算法选择。
对于映射规则,如果规则设计过于模糊、宽泛,可能所有元素都映射到同一个桶,导致桶排序往比较类排序算法演变;如果规则设计过于严苛,可能每一个桶只分配到一个元素,导致桶排序往计数排序方式演变。
对于桶中元素的排序,可以继续使用桶排序或者其他排序算法,最终桶排序的复杂度和稳定性,都根据排序算法的选择有所不同。
桶排序的适用于什么场景?
最好时间复杂度的场景是:序列中的元素值范围越小越好,比如对范围只有 10 的序列做排序,申请 10 个桶就能实现遍历一次序列完成排序。
最好空间复杂度的场景是:序列中的元素值均匀分布,最终分配到每一个桶的元素数量都相差不大,这样可以避免数据倾斜的问题。
代码实现
package cn.fatedeity.algorithm.sort; import java.util.ArrayList;import java.util.List; /** * 桶排序算法 */public class BucketSort { private static void swap(List<Integer> numbers, int src, int target) { int temp = numbers.get(src); numbers.set(src, numbers.get(target)); numbers.set(target, temp); } private static void insertSort(List<Integer> numbers) { for (int i = 1; i < numbers.size(); i++) { for (int j = i; j > 0; j--) { if (numbers.get(j - 1) <= numbers.get(j)) { break; } swap(numbers, j, j - 1); } } } public static int<> sort(int<> numbers) { if (numbers.length == 0) { return numbers; } int min = numbers<0>, max = numbers<0>; for (int number : numbers) { if (number < min) { min = number; } else if (number > max) { max = number; } } // 以 10 为步长 int bucketNum = (max - min) / 10 + 1; List<List<Integer>> bucketList = new ArrayList<>(); for (int i = 0; i < bucketNum; i++) { bucketList.add(new ArrayList<>()); } // 将元素分配到桶中 for (int number : numbers) { int index = (number - min) / 10; List<Integer> bucket = bucketList.get(index); bucket.add(number); } int index = 0; for (int i = 0; i < bucketNum; i++) { List<Integer> bucket = bucketList.get(i); insertSort(bucket); for (int number : bucket) { numbers = number; } } return numbers; }}
文章来自https://www.cnblogs.com/fatedeity/p/16425568.html
标题:移动排序好玩吗 移动排序玩法简介,
链接:https://www.miaoshengapp.cn/yxgl/195678.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
热门手游
更多
热门攻略
-
移动排序好玩吗 移动排序玩法简介, 2023-10-08
-
移动排序什么时候出 公测上线时间预告, 2023-10-08
-
秩序大陆单职业好玩吗 秩序大陆单职业玩法简介, 2023-10-08
-
秩序大陆单职业什么时候出 公测上线时间预告, 2023-10-08
-
秩序与纷争好玩吗 秩序与纷争玩法简介,秩序与纷争和权力与纷争 2023-10-08
-
秦皇岛市第三届栗子产业发展规划交流会揭幕 “铁杆庄稼”年销售额近10亿人民币, 2023-10-08
-
秦皇岛市清洁取暖“一刀切” 致一部分群众挨冻?生态环境部回复:催促地区进一步整顿, 2023-10-08
-
秦皇传说好玩吗 秦皇传说玩法简介, 2023-10-08
-
秦海璐谈《小敏家》:李萍是有多重身份的当今女士缩影,秦海璐在小敏家的演技 2023-10-08
-
秦殇全结局触发条件 秦殇全结局介绍, 2023-10-08
热游排行榜