Java算法-简单选择排序

Java简单选择排序

 

思想:

第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最前或者最后,直到全部待排序的数据元素排完。

 

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

 

代码:

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

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

    // 简单选择排序
    public static void selectSort(int[] x) {
        int temp;
        show(x);
        for (int i = 0;i < x.length - 1;i++) {
            System.out.println("----------Round " + (i + 1) + "-----------");
            int lowerIndex = i;
            // 找出最小的一个索引
            for (int j = i + 1;j < x.length;j++) {
                if (x[j] < x[lowerIndex]) {
                    lowerIndex = j;
                }
            }
            // 交换
            temp = x[i];
            x[i] = x[lowerIndex];
            x[lowerIndex] = temp;
            show(x);
        }
    }

 

结果:

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

 

 

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