public class InsertionSort {
public static void main(String[] args) {
int[] a = {4,3,76,2,6,7,9,2,5,21};
System.out.println(Arrays.toString(a));
sort(a);
System.out.println(Arrays.toString(a));
}
/*
思路:把后面的值,向前插入到排好序的部分中
- 循环i从下标1开始递增,直到末尾
- i位置值存到临时变量tmp
- 进入j循环,从i-1到 j>=0
- 如果j位置值比tmp大,j位置值向后复制1位
- 否则,结束循环
- tmp的值放到j+1位置
*/
private static void sort(int[] a) {
for (int i = 1; i < a.length; i++) { //第一个位置已经有序,从第二个位置开始处理
int tmp = a[i]; //i位置值放到临时变量
int j; //内层循环结束后还要使用变量j
for (j = i-1; j >= 0 ; j--) { //寻找正确的插入位置
if (a[j] > tmp) {
a[j + 1] = a[j]; //大值向后复制
} else {
break; //小或相等,那么就是插入的位置
}
}
a[j+1] = tmp; //临时值插入到数组中
}
}
}
排序算法-插入排序
于 2023-07-18 18:00:14 首次发布