通常人们整理桥牌的方法是一张一张的来,将每一张插入到其他已经有序的牌中的适当位置。
• 思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的序列的合适位置,直到全部插入排序完为止。
Java 示例代码如下:
public class SortInsertion { public static void main(String[] args) { int[] a = {49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 1}; System.out.println("排序之前:"); for (int i=0; i<a.length; i++) { System.out.print(a[i] + " "); } // 直接插入排序 for (int i=1; i<a.length; i++) { // 待插入元素 int temp = a[i]; int j=i-1; while (j>=0 && a[j]>temp) { a[j+1] = a[j]; j--; } a[j+1] = temp; } System.out.println(); for (int i=0; i<a.length; i++) { System.out.print(a[i] + " "); } } }
PS: 也可以用 for 循环实现。但要主要 for 循环体语句的执行顺序 (参见:for循环的执行顺序),之前自己曾在这里糊涂了。
参考:
动画演示:http://zh.visualgo.net/sorting.html
此外,排序算法——插入排序 关于插入排序的思想,用抓牌比喻的很好!推荐下!