日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

选择排序算法,只需这篇文章就够了

發(fā)布時(shí)間:2025/3/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 选择排序算法,只需这篇文章就够了 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、說(shuō)在前面

一直想寫(xiě)一些簡(jiǎn)單易懂的文章,因?yàn)槠綍r(shí)看的很多的書(shū)籍或者文章都是看著很難受的感覺(jué),當(dāng)然,這并不是說(shuō)書(shū)籍寫(xiě)的不好,只是說(shuō)對(duì)于一些沒(méi)有太多基礎(chǔ)或者基礎(chǔ)不是很好的來(lái)說(shuō),相對(duì)來(lái)說(shuō)還是比較難以理解的。

這個(gè)系列主要是寫(xiě)一些簡(jiǎn)單易懂的數(shù)據(jù)結(jié)構(gòu)與算法的文章,同時(shí)也是幫助自己再理解理解這方面的知識(shí)。

作為數(shù)據(jù)結(jié)構(gòu)與算法的開(kāi)篇,還是以排序算法作為第一部分的內(nèi)容,需要注意的是,這一系列的文章并不是涉及到很多理論性質(zhì)的知識(shí),因?yàn)榍懊嬲f(shuō)了,主要還是希望文章是簡(jiǎn)單易懂的,希望能達(dá)到讀故事的感覺(jué)。如果需要去學(xué)習(xí)理論性質(zhì)的知識(shí),可以去查看相關(guān)的數(shù)據(jù)結(jié)構(gòu)與算法的書(shū)籍。

二、選擇排序算法

今天早上,老師又叫我們?nèi)ゲ賵?chǎng)上做早操,做早操之前呢,今天也需要排隊(duì),到操場(chǎng)的同學(xué)有5個(gè)人,今天的排序方法還是按照身高由低到高排列

圖片.png

但是,今天老師說(shuō)換一種方法排隊(duì),我來(lái)給你們排隊(duì),昨天你們排隊(duì)太慢了。

于是,老師說(shuō):第一個(gè)同學(xué)站在原地不要?jiǎng)印?/p>圖片.png

然后,我從后面4個(gè)同學(xué)當(dāng)中挑一個(gè)最矮的同學(xué),這個(gè)同學(xué)站在第一個(gè)同學(xué)后面,你們兩個(gè)站在原地不要?jiǎng)印?/p>圖片.png圖片.png

之后,老師再?gòu)暮竺?個(gè)同學(xué)里面挑一個(gè)最矮的同學(xué),然后讓他站在前面兩個(gè)排好的同學(xué)后面,這樣這三個(gè)同學(xué)就排好了,你們站著不要?jiǎng)印?/p>圖片.png圖片.png

老師又從最后兩個(gè)同學(xué)中挑一個(gè)最矮的同學(xué),讓他站在前面三個(gè)已經(jīng)排好的隊(duì)伍后面,這樣,這四個(gè)同學(xué)就排好隊(duì)列,這四個(gè)同學(xué)站著不要?jiǎng)印?/p>

圖片.png

四個(gè)同學(xué)排好了,只有最后一個(gè)同學(xué)了,然后,這個(gè)同學(xué)自己站到前面四個(gè)已經(jīng)排好隊(duì)的隊(duì)伍的最后,這樣5個(gè)同學(xué)的位置就排好了。

圖片.png圖片.png

老師看到排好了隊(duì),非常開(kāi)心,對(duì)同學(xué)們說(shuō):“我排隊(duì)是不是比你們自己排隊(duì)快啊!”

然后,這位程序員老師說(shuō),哪位同學(xué)懂了剛剛我給你們排隊(duì)的思想,能不能敘述一下,這時(shí)候,小明說(shuō):我會(huì)!,于是,小明說(shuō)了一下思想

初始時(shí)在隊(duì)伍中找到最小(大)元素,放到隊(duì)伍的起始位置作為已排好隊(duì)伍;然后,再?gòu)氖S辔磁判蜿?duì)伍中繼續(xù)尋找最小(大)元素,放到已排序隊(duì)伍的末尾。以此類(lèi)推,直到所有元素均排序完畢。

老師說(shuō),隊(duì)列都給你們排好了,小明同學(xué)也又很好的闡述了思想,你們把代碼實(shí)現(xiàn)以下吧(哈哈哈!)。

于是,小海同學(xué)就去按照老師的排隊(duì)方法,實(shí)現(xiàn)了選擇排序算法

public?static?void?selectionSort(int[]?arr)?{if?(arr?==?null?||?arr.length?<?2)?{return;}for?(int?i?=?0;?i?<?arr.length?-?1;?i++)?{int?minIndex?=?i;for?(int?j?=?i?+?1;?j?<?arr.length;?j++)?{//在待排序區(qū)選擇最小的元素minIndex?=?arr[j]?<?arr[minIndex]???j?:?minIndex;}swap(arr,?i,?minIndex);//?放到已排序序列的末尾,該操作很有可能把穩(wěn)定性打亂,所以選擇排序是不穩(wěn)定的排序算法}}public?static?void?swap(int[]?arr,?int?i,?int?j)?{int?tmp?=?arr[i];arr[i]?=?arr[j];arr[j]?=?tmp;}
性能分析

最差時(shí)間復(fù)雜度:O(n^2)
最優(yōu)時(shí)間復(fù)雜度:O(n^2)
平均時(shí)間復(fù)雜度: O(n^2)
所需輔助空間:O(1)
穩(wěn)定性:不穩(wěn)定

置頂或星標(biāo)公眾號(hào),第一時(shí)間接收小海熱文

方法如下

總結(jié)

以上是生活随笔為你收集整理的选择排序算法,只需这篇文章就够了的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。