思想:利用有序表的插入操作进行排序
有序表的插入:将一个记录插入到已排好序的有序表中,从而得到一个新的有序表。
代码如下:
/**
* 直接插入排序
*
* @author Administrator
*
*/
public class DirectInsertionSort {
public static void main(String[] args) {
int[] data = { 5, 8, 3, 0, 9, 12, 7 };
System.out.print("数组直接插入排序之前的序列为:");
printArray(data);
System.out.println();
System.out.print("数组直接插入排序排序之后的序列为:");
insertSort(data);
printArray(data);
}
private static void insertSort(int[] data) {
// 从第二个元素开始,第一个元素本身是有序的
for (int i = 1; i < data.length; i++) {
int key = data[i];
int j = i - 1;
while (j >= 0 && data[j] > key) {
data[j + 1] = data[j];
data[j] = key;
j--;
}
}
}
public static void printArray(int[] data) {
for (int d : data) {
System.out.print(d + " ");
}
}
}
插入排序是稳定的。