国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

算法一看就懂之「 選擇排序 」

人工智能 算法
「 選擇排序 」雖然在實際應用中沒有「 插入排序 」廣泛,但它也是我們學習排序算法中必不可少的一種。「 冒泡排序 」和「 插入排序 」都是在兩層嵌套循環中慢慢比較元素,不停的調整元素的位置。

「 選擇排序 」雖然在實際應用中沒有「 插入排序 」廣泛,但它也是我們學習排序算法中必不可少的一種。「 冒泡排序 」和「 插入排序 」都是在兩層嵌套循環中慢慢比較元素,不停的調整元素的位置。而「 選擇排序 」就比較直接了,屬于不出手則已,一出手,相應的元素就必須要到位,元素的位置就不會再變了。

[[320109]]

下面我們來詳細了解下一下它的邏輯。

一、「 選擇排序 」是什么?

選擇排序 也是一種很簡單的排序算法,它的思路也是將一組待排序的數據,分成2段,一段是“已排序”了的數據,另一段是“未排序”的數據。當然,在最開始的時候,“已排序”區段里是沒有數據的。排序開始后,每次都從“未排序”的數據中取出一個最小的元素(注意,這里是取最小的元素,這一點與「 插入排序 」是不同的),然后將這個最小的元素插入到“已排序”數據中末尾元素的后面(這里其實是將這個最小元素與“已排序”數據的末尾緊鄰的下一位元素進行交換),這樣保持了“已排序”中的數據永遠是有序的。一直這么循環的去處理,直到所有的“未排序”的數據都已交換完,則整個排序全部完成。

下面用圖示例講解一下:

 

 

(圖片來源網絡)

從上圖可以看到,初始數組是

元素 29 72 98 13 87 66 52 51 36
下標 0 1 2 3 4 5 6 7 8
 

要對這個數組進行從小到大排序,默認初始狀態是全部無序的,因此對這個數組開始遍歷找最小元素。

1.第一遍大循環時,在整個數組中找到最小元素“13”,將這個最小元素“13”與數組的開頭位置元素“29”進行交換。交換后數組為:

元素 13 72 98 29 87 66 52 51 36
下標 0 1 2 3 4 5 6 7 8

2.第二遍大循環時,元素“13”屬于“已排序”區段了,剩下所有元素都屬于“未排序”的區段。從剩下元素中找到最小元素“29”,將這個最小元素“29”與元素“72”進行交換(因為元素“72”是已排序數組緊鄰的后一位元素),交換后數組為:

元素 13 29 98 72 87 66 52 51 36
下標 0 1 2 3 4 5 6 7 8

3.第三遍大循環時,“已排序”區段里已經有元素“13”、“29”了,剩下其它元素都屬于“未排序”的。從剩下元素中找到最小元素“36”,將這個最小元素“36”與元素“98”進行交換(因為元素“98”是已排序數組緊鄰的后一位元素),交換后數組為:

元素 13 29 36 72 87 66 52 51 98
下標 0 1 2 3 4 5 6 7 8

4.第四遍大循環時,“已排序”區段里已經有元素“13”、“29”、“36”了,剩下其它元素都屬于“未排序”的。從剩下元素中找到最小元素“51”,將這個最小元素“51”與元素“72”進行交換(因為元素“72”是已排序數組緊鄰的后一位元素),交換后數組為:

元素 13 29 36 51 87 66 52 72 98
下標 0 1 2 3 4 5 6 7 8

5.第五遍大循環時,“已排序”區段里已經有元素“13”、“29”、“36”、“51”了,剩下其它元素都屬于“未排序”的。從剩下元素中找到最小元素“52”,將這個最小元素“52”與元素“87”進行交換(因為元素“87”是已排序數組緊鄰的后一位元素),交換后數組為:

元素 13 29 36 51 52 66 87 72 98
下標 0 1 2 3 4 5 6 7 8

6.第六遍大循環時,“已排序”區段里已經有元素“13”、“29”、“36”、“51”、“52”了,剩下其它元素都屬于“未排序”的。從剩下元素中找到最小元素“66”,發現這個最小元素“66”已經是位于已排序數組緊鄰的后一位元素了,因此無需交換,數組保持不變:

元素 13 29 36 51 52 66 87 72 98
下標 0 1 2 3 4 5 6 7 8

7.第七遍大循環時,“已排序”區段里已經有元素“13”、“29”、“36”、“51”、“52”、“66”了,剩下其它元素都屬于“未排序”的。從剩下元素中找到最小元素“72”,將這個最小元素“72”與元素“87”進行交換(因為元素“87”是已排序數組緊鄰的后一位元素),交換后數組為:

元素 13 29 36 51 52 66 72 87 98
下標 0 1 2 3 4 5 6 7 8

8.第八遍大循環時,“已排序”區段里已經有元素“13”、“29”、“36”、“51”、“52”、“66”、“72”了,剩下其它元素都屬于“未排序”的。從剩下元素中找到最小元素“87”,發現這個最小元素“87”已經是位于已排序數組緊鄰的后一位元素了,因此無需交換,數組保持不變:

元素 13 29 36 51 52 66 72 87 98
下標 0 1 2 3 4 5 6 7 8

9.第九遍大循環時,“已排序”區段里已經有元素“13”、“29”、“36”、“51”、“52”、“66”、“72”、“87”了,剩下未排序的元素只有“98”這一個了,直接保持其位置不變即可,即,此時全部排序完成,數組最終狀態為:

元素 13 29 36 51 52 66 72 87 98
下標 0 1 2 3 4 5 6 7 8

下面我們來看一個選擇排序的代碼示意:

算法題:對數組arr進行從小到大的排序,假設數組arr不為空,arr的長度為n思路:采用選擇排序方法

  1. public void selectionSort(int[] arr){ 
  2.     int i,j; 
  3.     int n = arr.length; 
  4.      
  5.     //每一次大循環都能找出剩余元素的最小值 
  6.     for(i=0; i<n; i++){ 
  7.         //min變量是用于存放最小值的下標的,在剛開始的時候,假設位置i是最小值,初始時將i賦值給min 
  8.         int min = i; 
  9.         //子循環是用于比較大小,從i的后面一位開始遍歷,遍歷后面所有元素 
  10.         for(j=i+1; j<n; j++){ 
  11.             //如果有元素小于min位的值,則將此元素的下標賦值給min 
  12.             if(arr[j] < arr[min]){ 
  13.                 min = j; 
  14.             } 
  15.         } 
  16.         //如果min不等于i,說明剛在在子循環里,找到了最小值,則需要交換元素位置 
  17.         if(min!=i){ 
  18.             //swap方法是用于交換數組中2個位置的值(傳入數組、下標),swap方法省略不寫了。 
  19.             swap(arr,min,i); 
  20.         } 
  21.     } 

二、「 選擇排序 」的性能怎么樣?

我們按照之前文章中講到的排序算法評估方法來對「 選擇排序 」進行一下性能評估:

  • 時間復雜度:

選擇排序原理就是在兩層嵌套循環里進行對比和交換,所以簡單來講,其一般情況下的時間復雜度就是O(n*n)了。但如果仔細去分析的話,就得看具體的數據情況。但無論數據情況是怎樣的,其元素比較的次數是一樣的,因此無論是最好情況還是最壞情況,它的元素比較次數沒區別。那再看看元素交換次數,如果待排序的數據本身就是有序的,其根本不需要交換元素,交換次數為0,但如果待排序的數據全部都是逆序的,那需要做n-1次元素交換。

因此,其選擇排序的最好、最壞、平均情況下,其時間復雜度都是:O(n*n)。

  • 空間復雜度:

選擇排序完全就是比較和交換數據,只需要一個輔助空間用來存儲待比較的元素的小標,并沒有消耗更多的額外空間,因此其空間復雜度是O(1)。

  • 排序穩定性:

選擇排序算法不是穩定性排序算法。這里再解釋一下穩定性排序是指:2個相等的元素,在排序前的相對前后位置和排序完成后的,相對前后位置保持一致。

選擇排序為啥不是穩定性排序呢,舉個例子:數組 6、7、6、2、8,在對其進行第一遍循環的時候,會將第一個位置的6與后面的2進行交換。此時,就已經將兩個6的相對前后位置改變了。因此選擇排序不是穩定性排序算法。

  • 算法復雜性:

選擇排序的算法無論是其設計思路上,還是代碼的編寫上都不復雜,其算法復雜性是較為簡單的。

以上,就是對數據結構中「 選擇排序 」的一些思考,您有什么疑問嗎?

碼字不易啊,喜歡的話不妨轉發朋友,或點擊文章右下角的“在看”吧。😊

 

責任編輯:武曉燕 來源: 不止思考
相關推薦

2019-08-14 10:20:32

算法數組鏈表

2020-04-15 08:33:43

Netty網絡通信

2023-05-12 09:08:48

TypeScript工具類型

2020-09-21 08:33:12

線程池調度Thread Pool

2021-05-14 07:11:49

方法調用類加載

2024-12-12 08:22:03

負載均衡算法無狀態

2018-09-28 14:28:28

MySQL存儲過程

2021-07-15 09:55:47

systemdLinux文件

2019-01-15 09:55:24

RAID磁盤陣列數據存儲

2022-08-15 19:49:57

Consul架構注冊中心

2022-05-29 22:55:00

適配器設計模式

2021-12-30 09:10:28

游戲開發開發技術熱點

2020-05-09 14:40:29

UI設計開發

2025-03-04 02:00:00

Python編寫自動化

2015-07-21 13:07:14

Reactjs教程

2024-11-20 16:02:47

.NET 9LINQ開發

2020-06-11 10:45:58

數據算法架構

2021-01-07 10:30:23

設計模式

2019-08-22 09:22:44

數據結構二叉搜索樹

2021-05-13 07:30:27

Kafka消息流系統
點贊
收藏

51CTO技術棧公眾號

欧美精品免费看| 亚洲国产高清在线观看| 欧美性jizz18性欧美| 尤物视频在线免费观看| 国产香蕉97碰碰久久人人| 精品不卡一区| www.-级毛片线天内射视视| 日韩码欧中文字| 99爱在线视频| 91视频88av| 久久综合九色综合97_久久久| 97视频在线观看网站| 久久九九免费视频| 亚洲永久免费| 91人人网站| 国产午夜精品麻豆| 欧美破处大片在线视频| av观看免费在线| 欧美一区二区福利视频| 老牛精品亚洲成av人片| 亚洲午夜在线观看| 欧美色视频日本高清在线观看| 欧美特黄色片| 日本不卡一区二区三区在线观看| 中文欧美字幕免费| 欧美巨大丰满猛性社交| 亚洲字幕一区二区| 国产精品久久久久久久蜜臀 | 亚洲十八**毛片| 91精品视频大全| 欧美极品xxx| 欧美黑人巨大xxxxx| 国产在线精品一区二区中文| 亚洲自拍偷拍综合| 老牛国内精品亚洲成av人片| 中国黄色录像片| 欧美猛男超大videosgay| 黄色不卡一区| 亚洲欧美日韩一级| 最近中文字幕2019免费| 久久亚洲风情| 欧美69xxx| 国产九区一区在线| 日韩欧美成人精品| 国产高清久久| 亚洲一区二区三区成人| 国产精品第一视频| 亚洲免费电影在线| 综合激情五月婷婷| 91看片就是不一样| www亚洲精品| 成人国产在线观看| japanese23hdxxxx日韩 | 欧美极品xxx| 国产精品2区| 大陆极品少妇内射aaaaa| 精品爽片免费看久久| 免费久久99精品国产| 在线看一级片| 日韩亚洲一区在线播放| 欧美一区二区三区免费在线看 | 国产夫妻自拍一区| 亚洲免费成人av电影| 久久精品99国产精品日本| 亚洲小说区图片区都市| 久久综合一区二区三区| 欧美日韩国产乱码电影| 亚洲福利国产| 丝袜综合欧美| 裸体裸乳免费看| 中文字幕日韩欧美| 久久久蜜桃精品| 久草在线综合| 中文字幕免费在线| caoporen国产精品| 欧美日韩国产a| 日韩av午夜在线观看| 超碰97免费在线| 国产天堂视频在线观看| 精品中文字幕乱| 一区二区三区波多野结衣在线观看 | 欧美久久久久久久| 精品国产一区二区在线观看| 日韩黄色一级片| 成人网ww555视频免费看| av在线播放亚洲| 国内精品伊人久久| 亚洲妇女屁股眼交7| 欧美激情视频一区二区三区在线播放 | 亚洲视频日本| 人妖欧美1区| 性高湖久久久久久久久aaaaa| 色偷偷91综合久久噜噜| 国产日韩精品一区二区三区| 综合亚洲色图| 在线国产情侣| 国产精品三级一区二区| 欧美丰满老妇厨房牲生活| 亚洲一区二区三区影院| 国产综合视频| 一区二区在线免费播放| 精品在线视频一区二区| 岛国一区二区三区| 91福利视频在线| 91探花福利精品国产自产在线 | 欧美hdxxx| 在线观看av网页| 性生活免费在线观看| 青青久久av北条麻妃海外网| 亚洲成av人影片在线观看| 免费国产一区二区| 自拍偷拍亚洲精品| 亚洲美女精品一区| 最新成人av网站| 99久久婷婷国产综合精品首页 | 不卡日韩av| 一区二区三区亚洲| 午夜久久久久久| 精品在线一区二区三区| 久久精品66| 都市激情久久综合| 黄网站免费观看| 一区二区精品视频| 国产精品免费在线免费| 亚洲精品国偷自产在线99热| 一区二区三区小说| 国产裸体歌舞团一区二区| 91蜜臀精品国产自偷在线| 电影天堂国产精品| 日本a一级在线免费播放| 国产精品久久久久久久乖乖| 成人a在线观看| 日韩在线精品视频| 欧美放荡的少妇| 亚洲少妇30p| 国产成人午夜电影网| 99九九热只有国产精品| 欲香欲色天天天综合和网| 中文字幕在线视频观看| 欧美日韩福利在线| 国产九色精品| 欧美亚洲另类在线| 国产亚洲欧美日韩美女| 91久久人澡人人添人人爽欧美| 97久久超碰国产精品| 久久亚洲欧洲| 久久国产成人精品| 精品麻豆剧传媒av国产九九九| 国产美女福利在线| 一级视频在线免费观看| 国产成人精品无码播放| 亚洲国产精品视频一区| 91人成网站www| 欧美亚洲成人精品| www.国产一区| 亚洲精品720p| 欧美精品日日鲁夜夜添| 亚洲五码中文字幕| 中文在线一区二区| 国产suv精品一区二区6| 国产一区二区你懂的| 成人三级视频| 精品精品国产三级a∨在线| 欧美xnxx| 伊人成综合网站| 免费不卡视频| 久草视频在线看| 欧美超级乱淫片喷水| 精品偷拍各种wc美女嘘嘘| 欧美日韩中文精品| 亚洲国产精品久久不卡毛片| 国产精品素人一区二区| a级精品国产片在线观看| 麻豆一区二区三| 国产日韩欧美一区在线| 欧美久久一级| 亚洲mv大片欧洲mv大片| 成人在线一区| 亚洲国产合集| 国产成人黄色| 精品一区二区三区中文字幕老牛| 草莓视频一区二区三区| 精品视频一区二区三区在线观看| 成人黄页网站视频| 国产成人精选| 日韩护士脚交太爽了| 久久爱.com| 95精品视频| 国产专区精品| 一区二区三区在线免费看| 亚洲综合伊人| 911精品国产| 人妖一区二区三区| 国产欧美日韩精品一区二区三区| 国产亚洲欧美日韩在线观看一区二区| 校花撩起jk露出白色内裤国产精品| 91蜜桃臀久久一区二区| 久久精品国产亚洲5555| 亚洲香蕉视频| 国产精品久久占久久|