欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python排序算法之選擇排序

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

一、前言

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

二、描述

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

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

在這里插入圖片描述

因為最小的元素是1,所以1被添加到仍為空的有序數(shù)組末尾。

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

在這里插入圖片描述

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

在這里插入圖片描述

三、代碼實現(xiàn)

選擇排序代碼:

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

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

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

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

總結(jié)

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

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

相關(guān)文章

  • python提取字典key列表的方法

    python提取字典key列表的方法

    這篇文章主要介紹了python提取字典key列表的方法,涉及Python中keys方法的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 在服務(wù)器上運行python文件詳細步驟

    在服務(wù)器上運行python文件詳細步驟

    很多小伙伴想知道如何在服務(wù)器上跑python程序的方法,那么這篇文章主要給大家介紹了關(guān)于在服務(wù)器上運行python文件的詳細步驟,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • 基于PyQT5制作一個桌面摸魚工具

    基于PyQT5制作一個桌面摸魚工具

    這篇文章主要介紹了如何利用PyQT5制作一個桌面摸魚工具,利用摸魚,打開小說,可實行完美摸魚,實時保存進度,快來跟隨小編一起動手試一試吧
    2022-02-02
  • Anaconda2 5.2.0安裝使用圖文教程

    Anaconda2 5.2.0安裝使用圖文教程

    這篇文章主要為大家詳細介紹了Anaconda2 5.2.0安裝使用圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 詳解Python中的array數(shù)組模塊相關(guān)使用

    詳解Python中的array數(shù)組模塊相關(guān)使用

    數(shù)組并不是Python中內(nèi)置的標配數(shù)據(jù)結(jié)構(gòu),不過擁有array模塊我們也可以在Python中使用數(shù)組結(jié)構(gòu),下面我們就來詳解詳解Python中的array數(shù)組模塊相關(guān)使用
    2016-07-07
  • Python裝飾器的執(zhí)行過程實例分析

    Python裝飾器的執(zhí)行過程實例分析

    這篇文章主要介紹了Python裝飾器的執(zhí)行過程,結(jié)合實例形式分析了Python裝飾器的原理、執(zhí)行過程及相關(guān)操作注意事項,需要的朋友可以參考下
    2018-06-06
  • Python中的pygal安裝和繪制直方圖代碼分享

    Python中的pygal安裝和繪制直方圖代碼分享

    這篇文章主要介紹了Python中的pygal安裝和繪制直方圖代碼分享,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Python常用模塊sys,os,time,random功能與用法實例分析

    Python常用模塊sys,os,time,random功能與用法實例分析

    這篇文章主要介紹了Python常用模塊sys,os,time,random功能與用法,結(jié)合實例形式分析了Python模塊sys,os,time,random功能、原理、相關(guān)模塊函數(shù)、使用技巧與操作注意事項,需要的朋友可以參考下
    2020-01-01
  • python 6行代碼制作月歷生成器

    python 6行代碼制作月歷生成器

    這篇文章主要介紹了python如何用6行代碼制作月歷生成器,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09
  • python函數(shù)中return后的語句一定不會執(zhí)行嗎?

    python函數(shù)中return后的語句一定不會執(zhí)行嗎?

    這篇文章主要給大家詳細分析講解了關(guān)于python函數(shù)中return語句后的語句是否一定不會執(zhí)行的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07

最新評論