排序演算法-選擇排序

來源:互聯網
上載者:User

標籤:void   代碼實現   blog   元素   最小   排序   記錄   log   時間複雜度   

演算法簡介

選擇排序就是找到數組中最小元素將其和數組第一個元素交換位置,然後在剩下的元素中找到最小元素並將其與數組第二個元素進行交換,以此類推,直至整個數組排序結束。

演算法描述
  • 找到數組中最小元素並將其和數組第一個元素交換位置
  • 在剩下的元素中找到最小元素並將其與數組第二個元素交換,直至整個數組排序

代碼實現
    /**     * 選擇     *     * @param array     */    private static void selectionSort(int[] array) {        if (array == null || array.length == 0 || array.length == 1)            return;        int min;        for (int i = 0; i < array.length - 1; i++) {            min = i;            for (int j = array.length - 1; j > i; j--) {                if (array[j] < array[min])                    min = j;//將最小數的索引儲存            }            //最小元素與第i位置元素互換            if (array[i] > array[min]) {                int temp = array[i];                array[i] = array[min];                array[min] = temp;            }        }    }
效能分析

最好情況:交換 0 次,但是每次都要找到最小的元素,因此時間複雜度為$ O(n^2) $。

最壞情況:交換 \(n-1\)次,但是每次都要找到最小的元素,因此時間複雜度為$ O(n^2) $。

平均情況下時間複雜度為$ O(n^2) $。

因為需要一個臨時變數來交換元素位置和一個變數記錄最小位置,(另外遍曆序列時自然少不了用一個變數來做索引),所以其空間複雜度為\(O(1)\)。

由於每次都是選取未排序序列R中的最小元素 a 與 R 中的第一個元素交換,很可能破壞了元素間的相對位置,因此選擇排序是不穩定的。

排序演算法 平均時間複雜度 最好情況 最壞情況 空間複雜度 穩定性
選擇排序 \(O(n^2)\) \(O(n^2)\) \(O(n^2)\) \(O(1)\) 不穩定

排序演算法-選擇排序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.