最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python排序算法之選擇排序

 更新時(shí)間:2023年04月23日 10:03:19   作者:i阿極  
這篇文章主要介紹了python排序算法之選擇排序,選擇排序表示從無序的數(shù)組中,每次選擇最小或最大的數(shù)據(jù),從無序數(shù)組中放到有序數(shù)組的末尾,以達(dá)到排序的效果,需要的朋友可以參考下

一、前言

相關(guān)知識(shí)來自《python算法設(shè)計(jì)與分析》。初級(jí)排序算法是指幾種較為基礎(chǔ)且容易理解的排序算法。初級(jí)排序算法包括插入排序、選擇排序和冒泡排序3種。雖然它們的效率相對(duì)于高級(jí)排序算法偏低,但是在了解初級(jí)排序算法之后,再去學(xué)習(xí)相對(duì)復(fù)雜的高級(jí)排序算法會(huì)容易許多。本文介紹選擇排序。

二、描述

選擇排序表示從無序的數(shù)組中,每次選擇最小或最大的數(shù)據(jù),從無序數(shù)組中放到有序數(shù)組的末尾,以達(dá)到排序的效果。

選擇排序的平均時(shí)間復(fù)雜度是O(n2),最好情況下的時(shí)間復(fù)雜度和最壞情況下的時(shí)間復(fù)雜度都是O( n2 )。另外,它是一個(gè)不穩(wěn)定的排序算法。選擇排序的過程很容易理解。如圖2-4所示,我們?nèi)砸赃f增排序的算法為例,先遍歷未排序的數(shù)組,找到最小的元素。然后,把最小的元素從未排序的數(shù)組中刪除,添加到有序數(shù)組的末尾。

在這里插入圖片描述

因?yàn)樽钚〉脑厥?,所以1被添加到仍為空的有序數(shù)組末尾。

如圖2-5所示,我們繼續(xù)對(duì)剩余元素進(jìn)行遍歷。這次,最小的元素是2。我們把它添加到已排序的數(shù)組末尾。由于已在有序數(shù)組中的元素必定小于未排序數(shù)組中的所有元素,所以這步操作是正確無誤的。

在這里插入圖片描述

如圖2-6所示,重復(fù)上述步驟,當(dāng)未排序數(shù)組中只剩下一個(gè)元素時(shí),把它添加到已排序的數(shù)組末尾,整個(gè)數(shù)組的排序就完成了。

在這里插入圖片描述

三、代碼實(shí)現(xiàn)

選擇排序代碼:

nums = [5,3,6,4,1,2,8,7]
res = []   #用于存儲(chǔ)已排序元素的數(shù)組
while len(nums): #當(dāng)未排序數(shù)組內(nèi)還有元素時(shí),重復(fù)執(zhí)行選擇最小數(shù)的代碼
 minInd = 0 #初始化存儲(chǔ)最小數(shù)下標(biāo)的變量,默認(rèn)為第一個(gè)數(shù)
 for i in range(1, len(nums)):
  if(nums[i] < nums[minInd]): #更新最小數(shù)的下標(biāo)
    minInd = i
 temp = nums[minInd]
 nums.pop(minInd) #把最小數(shù)從未排序數(shù)組中刪除
 res.append(temp) #把最小數(shù)插入到已排序數(shù)組的末尾
print(res)

運(yùn)行程序,輸出結(jié)果為:

[1,2,3,4,5,6,7,8] 

在程序中,第一個(gè)for循環(huán)中的i代表了有序數(shù)組之后的第一個(gè)位置,也就是未排序數(shù)組中的第一個(gè)位置。隨后,再使用一個(gè)for循環(huán),在未排序數(shù)組中找到最小值的下標(biāo)。首先,把最小值下標(biāo)minInd初始化為未排序數(shù)組中第一個(gè)元素的下標(biāo)。隨后,遍歷整個(gè)數(shù)組,遇到比目前的最小值更小的元素時(shí),更新下標(biāo)即可。找出最小值后,把它和未排序數(shù)組中的第一個(gè)元素交換位置,這時(shí)它就成了有序數(shù)組中的最后一個(gè)元素。

總結(jié)

以上就是要講的內(nèi)容,本文介紹了選擇排序的理論知識(shí)和代碼實(shí)現(xiàn)。選擇排序表示從無序的數(shù)組中,每次選擇最小或最大的數(shù)據(jù),從無序數(shù)組中放到有序數(shù)組的末尾,以達(dá)到排序的效果。選擇排序的平均時(shí)間復(fù)雜度是O(n2),最好情況下的時(shí)間復(fù)雜度和最壞情況下的時(shí)間復(fù)雜度都是O( n2 )。另外,它是一個(gè)不穩(wěn)定的排序算法。

到此這篇關(guān)于python排序算法之選擇排序的文章就介紹到這了,更多相關(guān)python選擇排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python入門之后再看點(diǎn)什么好?

    Python入門之后再看點(diǎn)什么好?

    看完了基礎(chǔ)書,甚至看兩遍了,但自己寫的時(shí)候還是沒思路,我該怎么辦?這篇文章主要介紹了Python入門之后再看點(diǎn)什么好,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python仿抖音表白神器

    python仿抖音表白神器

    這篇文章主要教大家制作python抖音表白神器,仿制抖音表白小軟件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Django 表單模型選擇框如何使用分組

    Django 表單模型選擇框如何使用分組

    這篇文章主要介紹了Django 表單模型選擇框如何使用分組,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • Python??Pandas教程之使用?pandas.read_csv()?讀取?csv

    Python??Pandas教程之使用?pandas.read_csv()?讀取?csv

    這篇文章主要介紹了Python Pandas教程之使用pandas.read_csv()讀取csv,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • python人工智能tensorflow常用激活函數(shù)Activation?Functions

    python人工智能tensorflow常用激活函數(shù)Activation?Functions

    這篇文章主要為大家介紹了python人工智能tensorflow常用激活函數(shù)Activation?Functions的匯總介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 對(duì)Python3之方法的覆蓋與super函數(shù)詳解

    對(duì)Python3之方法的覆蓋與super函數(shù)詳解

    今天小編就為大家分享一篇對(duì)Python3之方法的覆蓋與super函數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 對(duì)python中數(shù)組的del,remove,pop區(qū)別詳解

    對(duì)python中數(shù)組的del,remove,pop區(qū)別詳解

    今天小編就為大家分享一篇對(duì)python中數(shù)組的del,remove,pop區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python爬蟲之模擬知乎登錄的方法教程

    Python爬蟲之模擬知乎登錄的方法教程

    在爬蟲過程中,有些頁面在登錄之前是被禁止抓取的,這個(gè)時(shí)候就需要模擬登陸了,下面這篇文章主要給大家介紹了利用Python爬蟲模擬知乎登錄的方法教程,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • Python中python-nmap模塊的使用介紹

    Python中python-nmap模塊的使用介紹

    這篇文章主要介紹了Python中python-nmap模塊的使用,主要是portScanner()類方法展開全文,portScanner()類用于實(shí)現(xiàn)對(duì)指定主機(jī)進(jìn)行端口掃描,更多介紹內(nèi)容,需要的朋友可以參考一下
    2022-02-02
  • Python 注解方式實(shí)現(xiàn)緩存數(shù)據(jù)詳解

    Python 注解方式實(shí)現(xiàn)緩存數(shù)據(jù)詳解

    這篇文章主要介紹了Python 注解方式實(shí)現(xiàn)緩存數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-10-10

最新評(píng)論

繁昌县| 麟游县| 双江| 德昌县| 莱州市| 凤庆县| 泾阳县| 祁连县| 白朗县| 武平县| 乃东县| 耿马| 新昌县| 巴林左旗| 雷州市| 紫阳县| 甘孜县| 四会市| 敦煌市| 黔江区| 桐梓县| 阿城市| 繁峙县| 新安县| 壤塘县| 昌江| 临海市| 凤阳县| 凉山| 兰坪| 新源县| 交口县| 建德市| 长葛市| 黔江区| 祁阳县| 安泽县| 类乌齐县| 芦溪县| 洪洞县| 佛冈县|