在比特尼排序中,比较是按照预定义的顺序(比特尼序列)进行的,不依赖于要排序的数据。让我们来看一个 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)。那么输出将是…… 阅读更多
假设我们有一个正整数,我们必须检查它是否具有交替位——因此,两个相邻位将始终具有不同的值。因此,如果输入类似于 10,则输出将为 True,因为 10 的二进制表示为 1010。为了解决这个问题,我们将遵循以下步骤:p := n AND 1如果 n < 2,则——返回 truen := n/2当 n 不为零时,执行——c := n AND 1如果 c XOR p 等于 0,则——返回 falsep := cn := n/2返回 true让我们来看下面的实现,以便更好地理解——示例 在线演示#include ... 阅读更多
计数排序统计具有不同键值的对象数量。让我们来看一个例子——注意——以下代码也可以用于负数。示例 在线演示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]++; ... 阅读更多