天津做网站的公司,wordpress+魅族,网站备案系统登录,微信公众号功能模块桶排序和归并排序有那么点点类似#xff0c;也使用了归并的思想。大致步骤如下#xff1a;
设置一个定量的数组当作空桶。Divide - 从待排序数组中取出元素#xff0c;将元素按照一定的规则塞进对应的桶子去。对每个非空桶进行排序#xff0c;通常可在塞元素入桶时进行插入…桶排序和归并排序有那么点点类似也使用了归并的思想。大致步骤如下
设置一个定量的数组当作空桶。Divide - 从待排序数组中取出元素将元素按照一定的规则塞进对应的桶子去。对每个非空桶进行排序通常可在塞元素入桶时进行插入排序。Conquer - 从非空桶把元素再放回原来的数组中。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;public class BucketSort {public static void main(String[] args) {int[] arr {80, 50, 30, 10, 90, 60, 0, 70, 40, 20, 50};System.out.println(Original array: Arrays.toString(arr));bucketSort(arr);System.out.println(Sorted array: Arrays.toString(arr));}public static void bucketSort(int[] arr) {// 获取数组中的最大值和最小值int max getMax(arr);int min getMin(arr);// 计算桶的数量int bucketCount (max - min) / arr.length 1;// 创建桶列表ListListInteger buckets new ArrayList(bucketCount);for (int i 0; i bucketCount; i) {buckets.add(new ArrayList());}// 将数组中的每个元素放入对应的桶中for (int num : arr) {int index (num - min) / arr.length;buckets.get(index).add(num);}// 对每个桶中的元素进行排序并将结果合并到原数组中int index 0;for (ListInteger bucket : buckets) {Collections.sort(bucket);for (int num : bucket) {arr[index] num;}}}private static int getMax(int[] arr) {int max arr[0];for (int num : arr) {if (num max) {max num;}}return max;}private static int getMin(int[] arr) {int min arr[0];for (int num : arr) {if (num min) {min num;}}return min;}
}图网侵删