插入排序有两部分,排序部分和未排序部分。外层迭代将第i个元素插入到正确位置,内层迭代以冒泡的方式将第i个元素逐渐往前挪动到正确位置!
基本实现:
Integer[] arr = {5,8,6,3,9,2,1,7};
for (int i = 1; i < arr.length; i++) {
// 内循环倒序比较——j下标值和j-1下标值冒泡比较,直到插入到正确位置
for (int j = i; j > 0; j--) {
if (arr[j] < arr[j - 1]) {
int swap = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = swap;
}
}
}
System.out.println(Arrays.toString(arr));
结果:
[1, 2, 3, 5, 6, 7, 8, 9]
时间复杂度O(n^2)