📜  用于二进制插入排序的Java程序(1)

📅  最后修改于: 2023-12-03 14:56:19.095000             🧑  作者: Mango

用于二进制插入排序的 Java 程序

本文将介绍如何使用 Java 编写二进制插入排序程序。

什么是二进制插入排序?

二进制插入排序是插入排序的一种优化版本。在插入排序中,每个元素需要比较一次来确定其正确的位置。而在二进制插入排序中,使用二分查找法来确定元素的位置,从而提高排序效率。

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 实现二进制插入排序的方法。您可以通过修改示例程序来尝试不同的排序用例,加深对二进制插入排序的理解。