排序--SelectionSort 選擇排序

選擇排序 no implementation java


  選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工做原理是每一次從待排序的元素中中選出最小(或最大)的一個元素,存放在序列的起始位置,直到所有待排序的數據元素排完。 選擇排序是不穩定的排序方法git

  選擇排序圖解。假設你有以下的數組須要排序github

  

  第一次。我先遍歷一邊數組找出最小的值, 發現是index = 1 的位置 value = 1, 交換index = 0 和index = 1 的位置。算法

    

  這個時候, index = 0 的位置已經排好了。咱們接着從index = 1 的位置開始排序發現 最小的值是2。交換位置數組

  

  重複剛纔的步驟就能夠獲得排好後的數組less

  

  選擇排序須要的比較次數是N^2. O(N^2) ide

  由於比較簡單,下面直接給出代碼spa

    // 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選擇排序

  具體的實現能夠參考3d

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

相關文章
相關標籤/搜索