📅  最后修改于: 2023-12-03 14:56:19.095000             🧑  作者: Mango
本文将介绍如何使用 Java 编写二进制插入排序程序。
二进制插入排序是插入排序的一种优化版本。在插入排序中,每个元素需要比较一次来确定其正确的位置。而在二进制插入排序中,使用二分查找法来确定元素的位置,从而提高排序效率。
下面是一个示例程序,演示如何使用 Java 实现二进制插入排序:
public class BinaryInsertionSort {
public static void main(String[] args) {
// 定义要排序的数组
int[] arr = { 2, 4, 1, 7, 5, 9 };
// 二进制插入排序
binaryInsertionSort(arr);
// 打印排序后的数组
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
/**
* 使用二进制插入排序排序数组
*
* @param arr 待排序的数组
*/
public static void binaryInsertionSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int key = arr[i];
int left = 0;
int right = i - 1;
// 使用二分查找法查找元素的插入位置
while (left <= right) {
int mid = (left + right) / 2;
if (key < arr[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
}
// 将元素插入到正确的位置
for (int j = i - 1; j >= left; j--) {
arr[j + 1] = arr[j];
}
arr[left] = key;
}
}
}
在上面的示例程序中,binaryInsertionSort
方法使用了二分查找法来找到元素的插入位置,并将元素插入到正确的位置。main
方法定义了要排序的数组,并调用 binaryInsertionSort
方法进行排序。接着使用 for
循环打印排序后的数组。
通过本文的介绍,您现在应该已经了解了二进制插入排序的原理,并学会了使用 Java 实现二进制插入排序的方法。您可以通过修改示例程序来尝试不同的排序用例,加深对二进制插入排序的理解。