插入排序

65 阅读1分钟

插入排序

  • 首先,检查数组是否为空或长度是否小于 2。如果是,直接返回,因为这种情况下不需要排序。
  • 外层循环从索引值为 1 的元素开始,逐个将元素插入已排序的部分。
  • 内层循环用于比较和交换元素。从当前外层循环的索引值 i 的前一个索引值 j 开始,同时 j 大于 0(确保不会越界),并且当前元素 arr[j] 大于它后面的元素 arr[j+1],就交换两个元素的位置。

插入排序的一个典型实现,其平均和最坏情况时间复杂度都是 O(n2)O(n^2),其中 nn 是数组的长度。这种排序算法适用于小规模的数据集

/**
 * 插入排序
 */
public class InsertSort {

    public static void main(String[] args) {
        int[] arr = new int[]{3, 5, 22, 111, 5};
        sort(arr);
    }


    public static void sort(int[] arr) {

        if (arr == null || arr.length < 2) {
            return;
        }

        for (int i = 1; i < arr.length; i++) {

            for (int j = i - 1; j > 0 && arr[j] > arr[j + 1]; j--) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;

            }


        }

    }

}