插入排序概述
插入排序(Insertion Sort)是基础排序算法之一,特别适合数据量较小的场景。其核心在于构建有序序列,将未排序元素逐个插入到已排序部分的正确位置。
核心思想
算法维护一个已排序的子序列。遍历数组时,取出当前元素,从后向前扫描已排序部分。若发现比当前元素大的值,则将其向后移动一位,为当前元素腾出空间。重复此过程直到找到合适位置或到达序列头部,随后插入该元素。整个过程类似于整理扑克牌,每次拿起一张新牌,插入到手牌的正确顺序中。
执行步骤
- 默认第一个元素已排序。
- 选取下一个元素,在已排序序列中从后向前比较。
- 若已排序元素大于待插入元素,则将其后移。
- 重复比较与移动,直到找到不大于待插入元素的位置。
- 将待插入元素放入空出的位置。
- 重复上述步骤直至处理完所有元素。
Java 代码实现
下面是一个标准的 Java 实现示例。注意观察内部循环如何移动元素以及临时变量 temp 的作用。
import java.util.Arrays;
public class InsertionSort {
public static void main(String[] args) {
int[] arr = {1, 62, 81, 0, 23, 55, 76, 87, 20, 54, 65, 76, 1};
arr = insertionSort(arr);
System.out.println(Arrays.toString(arr));
}
public static int[] insertionSort(int[] array) {
// 从第二个元素开始,假设第一个元素已排序
for (int i = 1; i < array.length; i++) {
int temp = array[i]; // 暂存当前待插入元素
i - ;
(j >= && array[j] > temp) {
array[j + ] = array[j];
j--;
}
array[j + ] = temp;
}
array;
}
}


