官术网_书友最值得收藏!

4.1 選擇排序算法

選擇排序法就是反復從未排序的數列中取出最小(或最大)的值,加入另一個數列中,最后的結果即為已排序好的數列。選擇排序法包括兩類,即遞增排序和遞減排序。

 遞增排序:在未排序數列中取最小值,與數列第一個位置交換;然后再從未排序的數列中取最小值,與數列的第二個位置交換;如此重復,直到數列中的所有數據均已按照從小到大的順序完成排序。

 遞減排序:在未排序數列中取最大值,與數列中第一個位置交換;然后再從未排序的數列中取最大值,與數列的第二個位置交換;如此重復,直到數列中的所有數據均已按照從小到大的順序完成排序。

例如,有這樣一組數據:56, 18, 49, 84, 72,如圖4.1所示。采用選擇排序算法對其遞增排序,步驟如下。

(1)找到數列中的最小值18,與數列中的第一個元素56交換,如圖4.2所示。

圖4.1 原始值

圖4.2 第一次排序結果

(2)從第二個值開始,找到余下數列(56, 49, 84, 72)中的最小值49,和第二個值56交換,如圖4.3所示。

(3)從第3個值開始,找到余下數列(56, 84, 72)中的最小值56,和第3個值交換。由于56本來就在第三個位置,因此位置不變,如圖4.4所示。

圖4.3 第二次排序結果

圖4.4 第三次排序結果

(4)從第4個值開始,找到余下數列(72, 84)中的最小值72,和第4個值84交換,如圖4.5所示。

(5)5個數全部排完,最終排序結果如圖4.6所示。

圖4.5 第四次排序結果

圖4.6 最終排序結果

接下來用Python代碼實現上述選擇排序過程。

【實例4.1】 使用選擇排序法將列表中的數字遞增排序。(實例位置:資源包\Code\04\01)

具體代碼如下:

運行結果如圖4.7所示,排序的步驟和前面的分析完全吻合。

【實例4.2】 京東商場24小時圖書銷量排行榜。(實例位置:資源包\Code\04\02)

根據京東商城計算機類圖書的24小時銷量數據,采用選擇排序法生成圖書銷量排行榜。具體代碼如下:

運行結果如圖4.8所示。

圖4.7 選擇排序法

圖4.8 運行結果

主站蜘蛛池模板: 西平县| 南澳县| 东宁县| 潼关县| 胶南市| 焦作市| 天祝| 房产| 龙山县| 昆山市| 海南省| 拜泉县| 台江县| 集贤县| 蒲江县| 诸暨市| 兴城市| 宣汉县| 泗洪县| 瑞丽市| 任丘市| 荣成市| 汕尾市| 朔州市| 沈丘县| 昭通市| 石林| 建德市| 宜章县| 邓州市| 枣阳市| 清水河县| 衡阳县| 板桥市| 甘德县| 元氏县| 玉溪市| 新乡县| 襄汾县| 巴彦淖尔市| 翁源县|