- Python算法設計與分析從入門到精通
- 明日科技編著
- 741字
- 2022-07-28 18:54:36
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 運行結果
- Learn ECMAScript(Second Edition)
- 算法零基礎一本通(Python版)
- 動手玩轉Scratch3.0編程:人工智能科創教育指南
- Mastering QGIS
- 羅克韋爾ControlLogix系統應用技術
- Oracle Database 12c Security Cookbook
- jQuery開發基礎教程
- ExtJS高級程序設計
- Programming with CodeIgniterMVC
- iOS開發項目化入門教程
- Learning Cocos2d-JS Game Development
- Node.js應用開發
- H5頁面設計與制作(全彩慕課版·第2版)
- C語言程序設計
- Linux Networking Cookbook