【Algorithm】插入排序法

通常人们整理桥牌的方法是一张一张的来,将每一张插入到其他已经有序的牌中的适当位置。

• 思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的序列的合适位置,直到全部插入排序完为止。

 

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循环的执行顺序),之前自己曾在这里糊涂了。

 

 

参考:

各种排序算法的分析及java实现

动画演示:http://zh.visualgo.net/sorting.html

 

此外,排序算法——插入排序 关于插入排序的思想,用抓牌比喻的很好!推荐下!

posted @ 2016-03-29 19:46  WriteOnRead  阅读(191)  评论(0编辑  收藏  举报