欢迎访问宙启技术站
智能推送

用Java实现插入排序算法

发布时间:2023-06-23 13:08:13

插入排序(Insertion Sort)是一种简单的排序算法,其基本思想是将待排序的元素依次插入到已排序的数列中。它的核心思想是将数组分为已排序区间和未排序区间两部分,依次将未排序区间的数插入到已排序区间中,直到未排序区间为空。插入排序的时间复杂度为O(n^2),在数据量较小的情况下具有优秀的性能,但在数据量较大的情况下不够高效。

下面是Java实现插入排序算法的代码:

public class InsertionSort {
    public static void main(String[] args) {
        int[] arr = {5, 7, 1, 6, 9, 2, 3, 8, 4};
        insertionSort(arr);
        for (int i : arr) {
            System.out.print(i + " ");
        }
    }

    public static void insertionSort(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            int temp = arr[i];
            int j = i - 1;
            while (j >= 0 && arr[j] > temp) {
                arr[j + 1] = arr[j];
                j--;
            }
            arr[j + 1] = temp;
        }
    }
}

代码中,我们定义了一个静态方法insertionSort(),接收一个int类型的数组作为参数,并使用for循环遍历数组,从第二个元素开始插入到前面已排序的元素中。在每次插入操作中,使用一个临时变量temp保存当前要插入的元素,用j指示当前元素所在的位置,并从当前元素的前一个位置开始往前遍历已排序的数组元素,将大于temp的元素向后移动一位,直到找到 个小于或等于temp的元素,将temp插入到该元素的后面即可。

在主函数中,我们创建了一个长度为9的int类型数组,并对其进行插入排序操作,最终输出排序后的数组元素。

总之,插入排序算法较为简单,但在数据量较大时效率较低,不建议在数据量较大的情况下使用。在实际开发中,算法的选择应该根据实际场景和数据量的大小进行权衡,以达到最优的效果。