插入排序就是将数据一个一个的插入到有序数组中,那么最终组成的数组也将是一个有序数组,以达到排序的目的。
流程分析:
9 54 7 33 74 30 42 71 59 原始数据
9 | 54 7 33 74 30 42 71 59 9作为一个 初始的有序数组
9 54 | 7 33 74 30 42 71 59 把54与有序数组去比较,放在对应的位置,后面的操作都是如此
7 9 54 | 33 74 30 42 71 59
7 9 33 54 | 74 30 42 71 59
7 9 33 54 74 | 30 42 71 59
7 9 30 33 54 74 | 42 71 59
7 9 30 33 42 54 74 | 71 59
7 9 30 33 42 54 71 74 | 59
7 9 30 33 42 54 59 71 74 | 数组排序完毕
代码:
public class InsertSort {
public static void main(String[] args) {
int[] arr = new int[10];
for (int i = 0; i < 10; i++) {
arr[i] = (int) (Math.random() * 99);
}
printArr(arr);
sort(arr);
printArr(arr);
}
private static void sort(int[] arr) {
int i,j,target;
for (i = 1; i < arr.length; i++) {
j = i;
target = arr[i];
while(j > 0 && target < arr[j-1]) {
arr[j] = arr[j-1];
j--;
}
arr[j] = target;
}
}
public static void printArr(int arr[]) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
}