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

1、引言

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

2、問題描述

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

示例1:對數據表A=(73,45,79,90,81,75,94,97)進行排序

輸出:45 73 75 79 81 90 94 97

3、解決方案

數據表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用無窮符號代替,又重復上面的操作,直到對所有數據排完序。如下圖所示

4、結語

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

到此這篇關於Python 選擇排序中的樹形選擇排序的文章就介紹到這瞭,更多相關Python 樹形選擇排序內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: