一.介绍
在本文中,我们将了解插入排序的工作原理。插入排序是一种简单的排序算法,每次构建一个元素,从而构建最终的排序数组。它对于小型数据集非常有效,并且经常用作更复杂的排序算法的一部分。
二.插入排序的工作原理
- 从数组的第二个元素开始。
- 将其与前面的元素进行比较。
- 如果较小,则将较大的元素向右移动。
- 将元件插入到正确的位置。
- 对所有元素重复此操作。
import java.util.Arrays;
public class InsertionSortExample {
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 main(String[] args) {
int[] arr = {64, 34, 25, 12, 22, 11, 90};
insertionSort(arr);
System.out.println(Arrays.toString(arr));
}
}
上述示例的流程图
时间复杂度
- **最佳情况:**当数组已经排序时,为 O(n)。
- 平均和最坏情况: O(n^2)。
空间复杂度
O(1),因为它在原地排序。
优点
- 简单实现
- 对于小数据集很有效
- 自适应(对于部分排序的数组很有效)。
缺点
对于大型数据集来说效率低下。
三.概括
插入排序在数据几乎已排序或对小数组进行排序的情况下非常有用。由于其简单性,它非常适合用于教育目的,并可作为更复杂算法的构建块。