Python 選擇排序中的樹形選擇排序

2022-09-24 10:51:11 字數 836 閱讀 6553

目錄

選擇排序裡面主要講了三個排序,分別是簡單選擇排序、樹形選擇排序、堆排序。今天這篇文章主要講樹形選擇排序,樹形選擇排序也被稱為錦標賽排序,樹形選擇排序運用了錦標賽的思想進行排序,樹形選擇排序是指首先對n個記錄的關鍵字進行兩兩比較,然後在n/2個較小者之間再進行兩兩比較,如此重複,直至選出最小的記錄為止。

給定乙個序列,我們將如何用樹形選擇排序來將它排序呢,下面將結合圖形和文字一起講述。

示例1:對資料表a=(73,45,79,90,81,75,94,97)進行排序

輸出:45 7crjbbj3 75 79 81 90 94 97

資料表a是亂序的,現在需要將它按照從小到大的順序排序好,根據樹形選擇排序的思想首先需要將比較的記錄全部作為葉子,然後按照從左到右的順序,兩兩進行比較,選出最小的那個,然後將比較後的n/2個元素又按照從左到右的順序兩兩進行比較,選出最小的,一直重複這樣操作後,會從底向上形成乙個完全二叉樹。可能讀完這段文字還是不好理解,下面我將用圖示來具體描述。

1.構建二叉樹:圖1是資料表a構成的二叉樹,首先直接將資料表a的資料直接放在最下面,也就是二叉樹的葉子;然後從左到程式設計客棧右兩兩進行比較,例如73和45比較後選出最小的45,79和90比較程式設計客棧後選出最小的79,將選出的45和79比較選出最小的45,一直這樣重複操作,直到構成乙個完整的二叉樹。

2. 如何輸出正確順序:根據圖1可以知道根節點是45,也就是最小的。圖2就是把第一遍找出來的45用無窮符號代替,然後又兩兩比較,直到根節點變為最小的,通過圖1和圖2對比可以看出第一遍找到的最小的是45,第二遍是73,,現在又將找出來的73用無窮符號代替,又重複上面的操作,直到對所有資料排完序。如下圖所示

樹形選擇排序還是比較好理解,圖和文字結合就比較容易結合。

樹形選擇排序演算法

樹形選擇排序有時也稱為錦標賽排序。排序過程中,按照錦標賽比賽規則進行,將所有n個資料看成一棵完全二叉樹的葉子結點,首先,完全二叉樹的葉子結點兩兩比較,勝出的兄弟進入樹的上一層繼續和兄弟進行比較,如果某個葉子結點沒有兄弟,則直接進入上一層,一直到二叉樹的第二層的兩個兄弟節點進行比較,勝出者為第一名。為...

排序演算法之 選擇排序 二)樹形選擇排序

簡介 樹形排序也被稱為錦標賽排序 步驟 1 把n個物件的排序碼進行兩兩比較,得到n 2個排序的優勝者,作為第一步比較的結果留下來 2 然後對這n 2個物件再進行排序碼的兩兩比較,如此重複,直到選出乙個排序碼最小的物件為止。3 構建一顆包含n個結點的完全二叉樹,當二叉樹不滿 葉子結點個數為奇數 用關鍵...

python中的選擇列舉,選擇排序,氣泡排序

str int len list sorted print input enumerate 函式用於將乙個可遍歷的物件 如列表,元祖,或字串 組合為乙個索引序列 選擇排序 numbers 5,7,8,9,2,0,6,4,9 numbers sorted numbers print numbers n...