排序之選擇排序

2021-10-08 04:52:34 字數 922 閱讀 7520

1.首先通過n-1次關鍵字比較,從n個記錄中找出關鍵字最小的記錄,將它與第乙個記錄交換

2.再通過n-2次比較,從剩餘的n-1個記錄中找出關鍵字次序最小的記錄,將它與第二個記錄交換

3.重複上面操作,共進行n-1趟排序後,排序結束

void

select_sort

(sq_list&l)

//交換

if(k!=i)

}}

大根堆的排序:

1.輸出堆頂元素,以堆中最後乙個元素代替之

2.然後又將根結點與左、右子樹的根結點進行比較,並與其中大者進行交換

3.重複上述操作,直至葉子結點,將得到新的堆,稱這個從堆頂至葉子的調整過程為「篩選」

堆建立:

單結點的二叉樹是堆

在完全二叉樹中所有以葉子結點(序號i>n/2)為根的子樹是堆

這樣,我們只需一次將以序號為n/2,n/2-1……1的結點為根的子樹調整為堆即可

(對應由n個元素組成的無序序列,「篩選」只需從第n/2個元素開始)

//堆調整

//已知r[s...m]中記錄的關鍵字除r[s]之外均滿足堆的定義

//本函式調整r[s]的關鍵字,使r[s...m]成為乙個大根堆

void

heap_adjust(t

r[],int s,int m)

r[s]

=rc;

//此時s的值變化了,相當於做交換

}void

heap_sort(t

r)//調整+排序

//進行n-1次排序

for(i=n;i>

1;i--)}

//交換

void

swap(t

&a,t

&b)

排序之選擇排序

書接上文,下面是選擇排序。選擇排序是最容易想到也是最容易實現的排序方式。主要思想 n個元素的陣列,每次從原陣列中找到最小的乙個元素,將這個元素加入新陣列,再把這個元素從元陣列中刪除,就完成了一次選擇。經過n 1次選擇後原陣列中剩下乙個元素,就是最大的乙個元素,將他加入新陣列裡,就完成了選擇排序。這個...

排序之選擇排序

選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法。乙個長度為n的待排序列,先找出 0,n 1 區間內最小的數,放在第一位,再找出 2...

排序之選擇排序

二 選擇排序 1 選擇排序 區間在不斷地變小 基本思想 選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。首先,選出最小的數放在第一位,然後選擇第二小的數,放在...