标签:
1 /* 2 本例拟在实现插入排序 3 插入排序: 4 类似扑克牌的排序,开始时,左手为空,所有的牌位于桌面上。然后,每次从桌上拿起一张牌并插入到左手正确位置。 5 注意点:左手中的牌始终是排好序的,比较时,将要比较的牌从左手最后一张牌开始比较,如果要比较的牌大,就直接放入左手最后一张 6 否则,再与倒数第二张比较,直到找到符合条件的位置 7 */ 8 public class Insertion 9 { 10 public static void main(String[] args) 11 { 12 int[] a = {8,5,0,9,6,2,4,1}; 13 sort(a); 14 for(int i=0; i<a.length; i++) 15 { 16 System.out.print(a[i] + " "); 17 } 18 } 19 20 public static int[] sort(int[] a) 21 { 22 for(int i=1; i<a.length; i++)//假设左手中已经有一张牌 23 { 24 int key = a[i]; //key是用来往左手中插入的牌 25 int j = i-1; //用key与左手中最后一张牌比较(左手中的牌已经排过序) 26 /* 27 如果左手中最后一张牌大于key,则需要将key与左手中倒数第二张牌进行比较,此时将左手最后一张牌的序号增加1,以此类推 28 如果左手最后一张牌小于key,则直接将该牌放在左手最后一张 29 */ 30 while(j>=0 && a[j] > key) 31 { 32 a[j+1] = a[j]; 33 j = j-1; 34 } 35 a[j+1] = key; 36 } 37 return a; 38 } 39 }
标签:
原文地址:http://www.cnblogs.com/JTechER/p/4417050.html