一、实现理论
- 有一个长度为 n 的数组。
- 位置 0 和位置 1 上的数进行比较,如果位置 0 大于位置 1 上的数,交换两个数的位置;否则不交换,继续步骤 3。
- 位置 1 和 位置 2 上的数进行比较,如果位置 1 大于位置 2 上的数,交换两个数的位置,这时位置 1 上的数发生变化,需要重新进行步骤 2;否则不交换。
- 继续比较,直到数组全部有序。
二、代码实现(Java)
public static void insertSort(int[] arr) {
if(arr == null || arr.length < 2)
return;
for(int i = 1; i < arr.length; i++) {
for(int j = i - 1; j >= 0; j--) {
if (arr[j] > arr[j + 1])
swap(j + 1, j, arr);
}
}
}
public static void swap(int m, int n, int a[]) {
int temp = a[m];
a[m] = a[n];
a[n] = temp;
}
三、时间复杂度
插入排序的时间复杂度是 O(N^2)