插入排序
依次寻找元素的适当位置并插入
三个 for循环:
// int[] arr = new int[80000];
int[] arr = new int[] { 2, 5, 8, 9, 6, 3, 1, 4, 7 };
int i;
int temp;
// for (int j = 0; j < arr.length; j++) {
// arr[j] = (int) Math.random() * 80000;
// }
// System.out.println(LocalDateTime.now());
for (int k = 1; k < arr.length; k++) {
temp = arr[k];
i = k;
for (int k2 = 0; k2 < i; k2++) {
if (temp < arr[k2]) {
for (int j = k; j > k2; j--) {
arr[j] = arr[j - 1];
}
arr[k2] = temp;
System.out.println(k);
break;
}
}
}
for (int j : arr) {
System.out.print(j + " ");
}
// System.out.println(LocalDateTime.now());
输出:
4
5
6
7
8
1 2 3 4 5 6 7 8 9
for + while:
int[] arr = new int[] { 2, 5, 8, 9, 6, 3, 1, 4, 7 };
int i;
int temp;
for (int j = 1; j < arr.length; j++) {
temp = arr[j];
i = j - 1;
while (i >= 0 && temp < arr[i]) {
arr[i + 1] = arr[i];
i--;
}
arr[i + 1] = temp;
}
for (int k : arr) {
System.out.print(k + " ");
}
1 2 3 4 5 6 7 8 9