在双调排序中,比较按照预定义的顺序(双调序列)进行,不依赖于要排序的数据。让我们看一个双调排序 Java 程序的示例 -示例 在线演示public class Demo{ void compare_swap(int my_arr[], int i, int j, int direction){ if ((my_arr[i] > my_arr[j] && direction == 1) || (my_arr[i] < my_arr[j] && direction == 0)){ int temp = my_arr[i]; my_arr[i] = my_arr[j]; my_arr[j] = temp; } } void merge_vals(int my_arr[], int low, int cnt, int direction){ ... 阅读更多
假设我们想设计一个类来查找数据流中第 k 大的元素。它是排序顺序中的第 k 大元素,而不是第 k 个不同的元素。KthLargest 类将有一个构造函数,它接受一个整数 k 和一个数组 nums,该数组将包含来自数据流的初始元素。对于对方法 KthLargest.add 的每次调用,都将返回表示数据流中第 k 大元素的元素。因此,如果输入类似于 k = 3,初始元素 = [4, 5, 8, 2],然后调用 add(3)、add(5)、add(10)、add(9)、add(4)。然后输出将... 阅读更多
计数排序计算具有不同键值的物体的数量。让我们看一个示例 -注意 - 下面的代码也可以用于负数。示例 在线演示import java.util.*; public class Demo{ static void count_sort(int[] arr){ int max_val = Arrays.stream(arr).max().getAsInt(); int min_val = Arrays.stream(arr).min().getAsInt(); int range = max_val - min_val + 1; int count[] = new int[range]; int result[] = new int[arr.length]; for (int i = 0; i < arr.length; i++){ count[arr[i] - min_val]++; ... 阅读更多