算法思路:
假定這個數組的序是排好的,然後從頭往後,如果有數比當前外層元素的值大,則將這個數的位置往後挪,直到當前外層元素的值大於或等於它前面的位置爲止.這具算法在排完前k個數之後,可以保證a[1…k]是局部有序的,保證了插入過程的正確性
public class InsertSort { /** * @param args */ public static void main(String[] args) { int[] a = new int[] {5, 2, 4, 6, 1, 3}; for(int i = 1; i < a.length; i ++) { //外層元素從第二個開始 int key = a[i]; int j = i - 1; while(j >= 0 && a[j] > key) { a[j + 1] = a[j]; //已經排好序的子序列元素後移 j --; } a[j + 1] = key; } for(int i = 0; i<a.length; i++) { System.out.print(a[i]); System.out.print(" "); } } }