直接插入排序(Straight Insertion Sort)的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。
– 《大话数据结构》
package com.zhangyike.insertSort;
import java.util.Arrays;
import java.util.Random;
/**
* 插入排序法
*/
public class InsertSort {
public static void main(String[] args) {
int count = 10;
int n[] = new int[count];
Random rd = new Random();
for (int i = 0; i < n.length; i++) {
n[i] = rd.nextInt(count);
}
System.out.println("排序前:" + Arrays.toString(n));
insertSort(n);
System.out.println("排序后:" + Arrays.toString(n));
}
private static void insertSort(int[] n) {
for (int i = 1; i < n.length; i++) {
int key = n[i];
int position = i;
//postion之前是一个有序序列,当position位置的值小于他前面的值的时候,去position前面找最后一个大于position的值
//注意:这块一定是key作比较,而不是n[position]
while(position > 0 && key < n[position-1]){
n[position] = n[position-1];//大于key的值依次向后移动。
position--;
//将key放在合适的位置上
n[position] = key;
}
}
}
}