C 資料結構(三)列表(4)選擇排序

2021-09-02 20:00:30 字數 707 閱讀 1120

// 對列表中起始於位置 p 的連續 n 個元素做選擇排序,valid(p) && rank(p) + n <= size

template

<

typename t>

void list

::selectionsort

(posi

(t) p,

int n)

}

template

<

typename t>

// 從起始於位置 p 的 n 個元素中選出最大者,1 < n

posi

(t) list

::selectmax

(posi

(t) p,

int n)

共迭代 n 次,在第 k 次迭代中

selectmax()θ(n - k)

remove()insertbefore()均為o(1)

故總體複雜度應為θ(n^2)

儘管如此,元素移動操作遠遠少於起泡排序

也就是說,θ(n^2)主要來自於元素比較操作

C 資料結構之選擇排序(三)

選擇排序是氣泡排序的改進!選擇排序 讓陣列中未排序的第乙個數,依次與後面的數進行比較,如果前面的數大於後面的數,就進行位置的交換。即第乙個數依次與後面的數比較,比較完之後最小的數在最前面 先標記一輪比較完後再交換位置 然後從第二個數開始以此類推,直至倒數第二個數為止。如下圖所示 c 如下 inclu...

複習資料結構 排序(三) 選擇排序

選擇排序的核心是 每趟選擇最小的元素和首部交換。時間複雜度 o n 2 選擇排序是一種不穩定的排序,為什麼呢?因為不好處理相等兩個數的前後位置,舉個例子,序列5 8 5 2 9,我們知道第一遍選擇第1個元素5會和2交換,那麼原序列中2個5的相對前後順序就被破壞了,所以選擇排序不是乙個穩定的排序演算法...

C 資料結構(氣泡排序,選擇排序)

它重複地遍歷要拍學的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。遍歷數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。氣泡排序演算法的運作如下 第一種方法 defbubble sort alis...