幾種排序分享 選擇排序

2021-09-29 16:56:56 字數 928 閱讀 4303

(這裡參考自 狄泰 資料結構課程)

這裡講一下選擇排序:

基本思想;

每次(比如從第 i 次, i = 0, 1, 2, …, n-2) 從後面 n-1 個待排的數中取關鍵字(關鍵字就是指比較的時候需要用來比較的的元素) 最小或最大的元素作為有序序列的第 i 個

看個圖:

直接上**:

這裡**分兩部分:

乙個是交換元素函式,

乙個是真正的排序函式

在後續的排序**的分享中第一部分的交換函式就不再寫出

template

<

typename t>

void sort::

swap

(t& a, t& b)

//這裡我是定義了乙個sort類中 定義乙個函式模板

emplate <

typename t>

void sort::

select

(t array,

int len,

bool min2max)

// min2max是指 從小到大還是從大到小排序}if

(min != i)

swap

(array[min]

, array[i]);

//這裡判斷一次是指 當前元素array[i]在其前面的的 i-1 個元素裡都沒有比他小或

//比他大的 所以min == i 就沒有必要交換提高效率

}}

ok **給出 分析也已經在**裡 就沒必要再一次分析

幾種排序分享 歸併排序

這裡參考自 狄泰 資料結構課程 基本思想 將兩個或兩個以上的有序序列合併成乙個有序序列 意思就是 v 0 v 1 v 02 v m 和 v m v m 1 v m 2 v n 1 合併 為 v 0 v 1 v 02 v n 1 看下圖 舉例 直接上 template typename t void ...

排序 選擇排序 選擇排序 堆排序

寫在前面 上傳github交換排序選擇排序 堆排序 選擇排序 顧名思義,我們就可以猜到,它是原則合適的元素放到合適的位置 從圖中,我們可以得到 1.用第乙個元素,和其他所有的元素進行比較,找出最小的,然後進行交換 2.然後進行,資料的遞增 3.直到資料全部有序 void selectsort int...

排序 選擇排序(直接選擇排序 堆排序)

選擇排序 selection sort 的基本思想是 每一趟從待排序的記錄中選出關鍵字最小的記錄,順序放在已排好序的子檔案的最後,直到全部記錄排序完畢。常用的選擇排序方法有 直接選擇排序 和堆排序。直接選擇排序 straight selection sort 1 直接選擇排序的基本思想 n個記錄的檔...