版权声明
- 本文原创作者:谷哥的小弟
- 作者博客地址:http://blog.csdn.net/lfdfhl
基本原理
插入排序是一种基于元素逐步插入的简单排序算法,其核心思想是将待排序序列分为已排序和未排序两部分,每次从未排序部分取出第一个元素,反向遍历已排序部分,找到合适位置插入。时间复杂度为平均和最差 O(n²),最好 O(n)(已有序时),空间复杂度 O(1),属于原地、稳定排序,适用于小规模数据或部分有序数据的场景。
代码实现
import java.util.Arrays;
public class InsertionSort {
public static void insertionSort(int[] arr) {
int n = arr.length;
// 从第二个元素开始遍历(索引1到n-1)
for (int i = 1; i < n; i++) {
int current = arr[i]; // 当前待插入元素
int j = i - 1; // 已排序部分的末尾索引
// 反向遍历已排序部分,找到插入位置
while (j >= 0 && arr[j] > current) {
arr[j + 1] = arr[j]; // 将大于current的元素后移
j--;
}
arr[j + 1] = current; // 插入当前元素到正确位置
}
}
public static void main(String[] args) {
int[] arr = {12, 11, 13, 5, 6};
insertionSort(arr);
System.out.println("Sorted array: " + Arrays.toString(arr));
// 输出:Sorted array: [5, 6, 11, 12, 13]
}
}