一.插入排序原理
插入排序(Insertion Sort)是一种简单直观的排序算法,它通过构建有序序列,对未排序的元素逐个插入到已排序的序列中。插入排序的核心思想是将待排序的元素与已排序的元素逐个比较并移动,直到找到合适的位置插入。
插入排序的具体步骤如下:
- 将第一个元素视为已排序序列。
- 遍历待排序序列,从第二个元素开始。
- 将当前元素与已排序序列的元素逐个比较,找到合适的位置插入。
- 将当前元素插入到正确的位置,使得已排序序列仍然有序。
- 重复步骤2到步骤4,直到遍历完所有元素。
二.使用Java实现插入排序
public class InsertionSort {
public static void main(String[] args) {
int[] arr = {5, 2, 8, 3, 1};
System.out.println("Before sorting:");
printArray(arr);
insertionSort(arr);
System.out.println("After sorting:");
printArray(arr);
}
public static void insertionSort(int[] arr) {
int n = arr.length;
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
// 逐个比较并移动已排序序列的元素
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
// 插入当前元素到正确的位置
arr[j + 1] = key;
}
}
public static void printArray(int[] arr) {
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
}
}
以上代码使用插入排序算法对一个整数数组进行排序。insertionSort
方法实现了插入排序的逻辑,通过逐个比较并移动已排序序列的元素,将待排序的元素插入到正确的位置。
运行以上代码,将输出如下结果:
Before sorting:
5 2 8 3 1
After sorting:
1 2 3 5 8
插入排序算法的时间复杂度为O(n^2),其中n是数组的长度。插入排序是一种稳定的排序算法,适用于小型数组或基本有序的数组。