package sort; /* * 插入排序的递归算法 * 从a[1]开始,到a[n-1]为止 * [i]被插入到数组的前i个有序元素中的适当位置上 */ public class InsertionSort { static void sort(int[] a,int n){ if(n>2){ sort(a,n-1); } insertInOrder(a[n-1],a,0,n-2); //把a[n-1]插入到前面已经有序的数组上去 } static void insertInOrder(int num,int[] a,int first,int last){ while(first<=last&&num<a[last]){ a[last+1]=a[last]; //把大于num的元素往后移 last--; } a[last+1]=num; } static void display(int[] a){ for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } } public static void main(String[] args) { int array[] = {2,5,1,3,9,4,6,8,7}; System.out.println("排序前:"); display(array); sort(array,array.length); System.out.println("/n/n排序后:"); display(array); } }