算法思路
插入排序的思路:
- 使arr[0~0]有序,这个范围只有一个数,已经是有序的状态。
- 使arr[0~1]有序,如果arr[1] < arr[0],交换。
- 使arr[0~i]有序,将arr[i]往前移动,直到arr[i]大于等于其左边的数。
…
时间复杂度
插入排序的时间复杂度为O(N2)。
代码
public class InsertionSort {
public static void insertSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = i; j > 0; j--) {
if (arr[j] < arr[j - 1]) {
ArrayUtil.swap(arr, j, j - 1);
}
}
}
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
int[] nums = ArrayUtil.generateRandomArray(20, 30);
insertSort(nums);
ArrayUtil.printArray(nums);
}
}
}