排序--SelectionSort 选择排序

选择排序 no implementation 


  选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的元素中中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法

  选择排序图解。假设你有如下的数组需要排序

  

  第一次。我先遍历一边数组找出最小的值, 发现是index = 1 的位置 value = 1, 交换index = 0 和index = 1 的位置。

    

  这个时候, index = 0 的位置已经排好了。我们接着从index = 1 的位置开始排序发现 最小的值是2。交换位置

  

  重复刚才的步骤就可以得到排好后的数组

  

  选择排序需要的比较次数是N^2. O(N^2) 

  因为比较简单,下面直接给出代码

    // O(n^2)  非常慢
    public static void sort(Comparable[] a) {
        for (int i = 0; i < a.length; i++) {
            int min = i;
            for (int j = i; j < a.length; j++) {
                if (less(a[j], a[min])) min = j;
            }
            exch(a, i, min);
        }
    }
SelectionSort选择排序

  具体的实现可以参考

  https://github.com/Cheemion/algorithms/blob/master/src/com/algorithms/sort/SelectionSort.java

  

 

  

 

  

posted @ 2017-09-15 10:16  哇哩顾得  阅读(344)  评论(0编辑  收藏  举报