1. 程式人生 > >排序算法之簡單選擇排序

排序算法之簡單選擇排序

clip order ng- left 運行 [] cal var ret

基本思想

在一組元素中選擇具有最小排序碼的元素,若它不是這組元素中的第一個元素,則將它與這組元素中的第一個元素對調;在未排序的剩下的元素中反復運行以上步驟,直到剩余元素僅僅有一個為止。

代碼

private void selectSort(int[] a, int left, int right) {
    for (int i = left; i < right; i++) {
        int k = i;
        int temp;
        for (int j = i + 1; j <= right; j++) {
            if
(a[j] < a[k]) k = j; } if (k != i){ temp = a[i]; a[i] = a[k]; a[k] = temp; } } }

性能分析

  • 時間復雜度
    簡單選擇排序的排序碼比較次數KCN與元素的初始排列無關。

    第i趟選擇具有最小排序碼元素所需的比較次數總是n?i?1次,如果整個待排序元素序列有n個元素。因此總的排序碼比較次數為
    KCN=m=0n?2(n?i?1)=n(n

    ?1)2
    元素的移動次數與元素序列的初始排列有關。在最好情況下。即當初始序列為有序時,無需移動元素;在最壞的情況下,即每一趟都要進行元素交換。

    所以平均情況下的時間復雜度為O(n2)

  • 穩定性
    簡單選擇排序是一種不穩定的排序方法。
‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); });

    排序算法之簡單選擇排序