直接插入排序(java版)
阿新 • • 發佈:2018-12-15
直接插入排序(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;
}
}
}
}