Python 選擇排序中的樹(shù)形選擇排序
1、引言
選擇排序里面主要講了三個(gè)排序,分別是簡(jiǎn)單選擇排序、樹(shù)形選擇排序、堆排序。今天這篇文章主要講樹(shù)形選擇排序,樹(shù)形選擇排序也被稱為錦標(biāo)賽排序,樹(shù)形選擇排序運(yùn)用了錦標(biāo)賽的思想進(jìn)行排序,樹(shù)形選擇排序是指首先對(duì)n個(gè)記錄的關(guān)鍵字進(jìn)行兩兩比較,然后在n/2個(gè)較小者之間再進(jìn)行兩兩比較,如此重復(fù),直至選出最小的記錄為止。
2、問(wèn)題描述
給定一個(gè)序列,我們將如何用樹(shù)形選擇排序來(lái)將它排序呢,下面將結(jié)合圖形和文字一起講述。
示例1:對(duì)數(shù)據(jù)表A=(73,45,79,90,81,75,94,97)進(jìn)行排序
輸出:45 73 75 79 81 90 94 97
3、解決方案
數(shù)據(jù)表A是亂序的,現(xiàn)在需要將它按照從小到大的順序排序好,根據(jù)樹(shù)形選擇排序的思想首先需要將比較的記錄全部作為葉子,然后按照從左到右的順序,兩兩進(jìn)行比較,選出最小的那個(gè),然后將比較后的n/2個(gè)元素又按照從左到右的順序兩兩進(jìn)行比較,選出最小的,一直重復(fù)這樣操作后,會(huì)從底向上形成一個(gè)完全二叉樹(shù)??赡茏x完這段文字還是不好理解,下面我將用圖示來(lái)具體描述。

1.構(gòu)建二叉樹(shù):圖1是數(shù)據(jù)表A構(gòu)成的二叉樹(shù),首先直接將數(shù)據(jù)表A的數(shù)據(jù)直接放在最下面,也就是二叉樹(shù)的葉子;然后從左到右兩兩進(jìn)行比較,例如73和45比較后選出最小的45,79和90比較后選出最小的79,將選出的45和79比較選出最小的45,一直這樣重復(fù)操作,直到構(gòu)成一個(gè)完整的二叉樹(shù)。

2. 如何輸出正確順序:根據(jù)圖1可以知道根節(jié)點(diǎn)是45,也就是最小的。圖2就是把第一遍找出來(lái)的45用無(wú)窮符號(hào)代替,然后又兩兩比較,直到根節(jié)點(diǎn)變?yōu)樽钚〉?,通過(guò)圖1和圖2對(duì)比可以看出第一遍找到的最小的是45,第二遍是73,,現(xiàn)在又將找出來(lái)的73用無(wú)窮符號(hào)代替,又重復(fù)上面的操作,直到對(duì)所有數(shù)據(jù)排完序。如下圖所示

4、結(jié)語(yǔ)
樹(shù)形選擇排序還是比較好理解,圖和文字結(jié)合就比較容易結(jié)合。
到此這篇關(guān)于Python 選擇排序中的樹(shù)形選擇排序的文章就介紹到這了,更多相關(guān)Python 樹(shù)形選擇排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解利用上下文管理器擴(kuò)展Python計(jì)時(shí)器
本文將和大家一起了解什么是上下文管理器?和?Python?的?with?語(yǔ)句,以及如何完成自定義。然后擴(kuò)展?Timer?以便它也可以用作上下文管理器,感興趣的可以了解一下2022-06-06
python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5表單布局控件QFormLayout詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5布局控件QFormLayout詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03
Python如何實(shí)現(xiàn)MySQL實(shí)例初始化詳解
這篇文章主要給大家介紹了關(guān)于Python如何實(shí)現(xiàn)MySQL實(shí)例初始化的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
詳解Python中的分組函數(shù)groupby和itertools)
這篇文章主要介紹了Python中的分組函數(shù)groupby和itertools)的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07
Python算法思想集結(jié)深入理解動(dòng)態(tài)規(guī)劃
這篇文章主要為大家介紹了Python算法思想集結(jié)深入理解動(dòng)態(tài)規(guī)劃詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Python控制臺(tái)輸出時(shí)刷新當(dāng)前行內(nèi)容而不是輸出新行的實(shí)現(xiàn)
今天小編就為大家分享一篇Python控制臺(tái)輸出時(shí)刷新當(dāng)前行內(nèi)容而不是輸出新行的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
Python環(huán)境搭建以及Python與PyCharm安裝詳細(xì)圖文教程
PyCharm是一種PythonIDE,帶有一整套可以幫助用戶在使用Python語(yǔ)言開(kāi)發(fā)時(shí)提高其效率的工具,這篇文章主要給大家介紹了關(guān)于Python環(huán)境搭建以及Python與PyCharm安裝的詳細(xì)圖文教程,需要的朋友可以參考下2024-03-03

