Java算法-选择排序

插入排序

 

思想:

将n个元素的数列分为已有序和无序两个部分,如插入排序下所示:

  {{a1},{a2,a3,a4,…,an}}

  {{a1⑴,a2⑴},{a3⑴,a4⑴ …,an⑴}}

  …

  {{a1(n-1),a2(n-1) ,…},{an(n-1)}}

  每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。

 

更多信息:http://baike.so.com/doc/4301762.html

 

代码:

    public static void main(String[] args) {
        int[] i = {1001,596,403,39,23,12,9,6,5,4,3,1};
        insertSort(i);
    }

    private static void show(int[] x) {
        for (int i:x) {
            System.out.print(i + " ");
        }
        System.out.println();
    }

    // 插入排序
    public static void insertSort(int[] x) {
        int temp;
        show(x);
        for (int i = 1;i < x.length;i++) {// i从1开始,因为第一个数已经是排好序的啦
            System.out.println("----------Round " + i + "-----------");
            for (int j = i;j > 0;j--) {
                if (x[j] < x[j - 1]) {
                    temp = x[j];
                    x[j] = x[j - 1];
                    x[j - 1] = temp;
                }
                show(x);
            }
        }
    }

 

结果:

1001 596 403 39 23 12 9 6 5 4 3 1 
----------Round 1-----------
596 1001 403 39 23 12 9 6 5 4 3 1 
----------Round 2-----------
596 403 1001 39 23 12 9 6 5 4 3 1 
403 596 1001 39 23 12 9 6 5 4 3 1 
----------Round 3-----------
403 596 39 1001 23 12 9 6 5 4 3 1 
403 39 596 1001 23 12 9 6 5 4 3 1 
39 403 596 1001 23 12 9 6 5 4 3 1 
----------Round 4-----------
39 403 596 23 1001 12 9 6 5 4 3 1 
39 403 23 596 1001 12 9 6 5 4 3 1 
39 23 403 596 1001 12 9 6 5 4 3 1 
23 39 403 596 1001 12 9 6 5 4 3 1 
----------Round 5-----------
23 39 403 596 12 1001 9 6 5 4 3 1 
23 39 403 12 596 1001 9 6 5 4 3 1 
23 39 12 403 596 1001 9 6 5 4 3 1 
23 12 39 403 596 1001 9 6 5 4 3 1 
12 23 39 403 596 1001 9 6 5 4 3 1 
----------Round 6-----------
12 23 39 403 596 9 1001 6 5 4 3 1 
12 23 39 403 9 596 1001 6 5 4 3 1 
12 23 39 9 403 596 1001 6 5 4 3 1 
12 23 9 39 403 596 1001 6 5 4 3 1 
12 9 23 39 403 596 1001 6 5 4 3 1 
9 12 23 39 403 596 1001 6 5 4 3 1 
----------Round 7-----------
9 12 23 39 403 596 6 1001 5 4 3 1 
9 12 23 39 403 6 596 1001 5 4 3 1 
9 12 23 39 6 403 596 1001 5 4 3 1 
9 12 23 6 39 403 596 1001 5 4 3 1 
9 12 6 23 39 403 596 1001 5 4 3 1 
9 6 12 23 39 403 596 1001 5 4 3 1 
6 9 12 23 39 403 596 1001 5 4 3 1 
----------Round 8-----------
6 9 12 23 39 403 596 5 1001 4 3 1 
6 9 12 23 39 403 5 596 1001 4 3 1 
6 9 12 23 39 5 403 596 1001 4 3 1 
6 9 12 23 5 39 403 596 1001 4 3 1 
6 9 12 5 23 39 403 596 1001 4 3 1 
6 9 5 12 23 39 403 596 1001 4 3 1 
6 5 9 12 23 39 403 596 1001 4 3 1 
5 6 9 12 23 39 403 596 1001 4 3 1 
----------Round 9-----------
5 6 9 12 23 39 403 596 4 1001 3 1 
5 6 9 12 23 39 403 4 596 1001 3 1 
5 6 9 12 23 39 4 403 596 1001 3 1 
5 6 9 12 23 4 39 403 596 1001 3 1 
5 6 9 12 4 23 39 403 596 1001 3 1 
5 6 9 4 12 23 39 403 596 1001 3 1 
5 6 4 9 12 23 39 403 596 1001 3 1 
5 4 6 9 12 23 39 403 596 1001 3 1 
4 5 6 9 12 23 39 403 596 1001 3 1 
----------Round 10-----------
4 5 6 9 12 23 39 403 596 3 1001 1 
4 5 6 9 12 23 39 403 3 596 1001 1 
4 5 6 9 12 23 39 3 403 596 1001 1 
4 5 6 9 12 23 3 39 403 596 1001 1 
4 5 6 9 12 3 23 39 403 596 1001 1 
4 5 6 9 3 12 23 39 403 596 1001 1 
4 5 6 3 9 12 23 39 403 596 1001 1 
4 5 3 6 9 12 23 39 403 596 1001 1 
4 3 5 6 9 12 23 39 403 596 1001 1 
3 4 5 6 9 12 23 39 403 596 1001 1 
----------Round 11-----------
3 4 5 6 9 12 23 39 403 596 1 1001 
3 4 5 6 9 12 23 39 403 1 596 1001 
3 4 5 6 9 12 23 39 1 403 596 1001 
3 4 5 6 9 12 23 1 39 403 596 1001 
3 4 5 6 9 12 1 23 39 403 596 1001 
3 4 5 6 9 1 12 23 39 403 596 1001 
3 4 5 6 1 9 12 23 39 403 596 1001 
3 4 5 1 6 9 12 23 39 403 596 1001 
3 4 1 5 6 9 12 23 39 403 596 1001 
3 1 4 5 6 9 12 23 39 403 596 1001 
1 3 4 5 6 9 12 23 39 403 596 1001 

 

 

 

你可能感兴趣的:(java算法)