(這裡參考自 狄泰 資料結構課程)
這裡講一下選擇排序:
基本思想;
每次(比如從第 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個記錄的檔...