Python實現(xiàn)插入排序和選擇排序的方法
話不多說,讓我們從最基本的排序算法開始吧
插入排序
如下圖所示,插入排序的實現(xiàn)思路顧名思義,就是 不斷地在一個已經(jīng)是有序的數(shù)組中,尋找合適位置并插入新元素 。
具體實現(xiàn)步驟為:
首先我們把整個數(shù)組拆分為有序區(qū)間和未排序區(qū)間,有序區(qū)間在插入排序一開始只有一個元素,就是數(shù)組的第一個元素。
接在有序區(qū)間之后的一個元素就是準(zhǔn)備插入的元素,在圖中就是標(biāo)為綠色的元素,在有序區(qū)間內(nèi)尋找位置并插入。
其尋找邏輯為:從后往前依次進(jìn)行比較,如果待插入元素大于當(dāng)前元素,則將待插入元素插入到當(dāng)前元素的后一位,如果待插入元素小于當(dāng)前元素,則將當(dāng)前元素后移一位。不斷重復(fù)該過程直至到數(shù)組的最后一位
其實現(xiàn)的具體代碼為:
def insertion_sort(a): length = len(a) if length <=1: return for i in range(1,length): j = i-1 value = a[i] while j >=0: if a[j]<value: a[j+1] = value break else: a[j+1] = a[j] if j == 0: a[j] = value j -=1 print(a)
return a時間復(fù)雜計算為:我們需要將整個數(shù)組遍歷一遍,所以這一部分為O(n),在每一次遍歷中都要執(zhí)行一次插入操作,其時間復(fù)雜度為O(n),所以總時間復(fù)雜度為O(n2)
選擇排序
選擇排序跟插入排序算法類似,都是將數(shù)組分為有序區(qū)間和未排序區(qū)間,區(qū)別在于插入排序是將一個新元素插入到有序區(qū)間內(nèi),而選擇排序則是在未排序區(qū)間中找到最小元素,并交換到有序區(qū)間之后。
實現(xiàn)代碼為:
def selection_sort(a): length = len(a) if length <=1: return for i in range(0,length-1): min_value = a[i] min_index = i j = i+1 while j<length: if a[j] < min_value: min_value = a[j] min_index = j j += 1 a[i],a[min_index] = a[min_index],a[i]
return a時間復(fù)雜度計算:數(shù)組長度為n,一共需要尋找n次最小值,每次尋找最小值都要遍歷未排序區(qū)間一次,其時間復(fù)雜度為O(n),乘以n次為O(n2)
- Python實現(xiàn)的插入排序,冒泡排序,快速排序,選擇排序算法示例
- Python排序算法之選擇排序定義與用法示例
- Python 實現(xiàn)選擇排序的算法步驟
- Python排序搜索基本算法之選擇排序?qū)嵗治?/a>
- Python tkinter 樹形列表控件(Treeview)的使用方法
- python GUI庫圖形界面開發(fā)之PyQt5樹形結(jié)構(gòu)控件QTreeWidget詳細(xì)使用方法與實例
- 一行python實現(xiàn)樹形結(jié)構(gòu)的方法
- python實現(xiàn)樹形打印目錄結(jié)構(gòu)
- Python如何生成樹形圖案
- Python 選擇排序中的樹形選擇排序
相關(guān)文章
python歐拉角和旋轉(zhuǎn)矩陣變換的實現(xiàn)示例
在計算機圖形學(xué)中,歐拉角和旋轉(zhuǎn)矩陣是描述物體旋轉(zhuǎn)的常用方法,本文主要介紹了python歐拉角和旋轉(zhuǎn)矩陣變換的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2024-03-03Python?Asyncio中Coroutines,Tasks,Future可等待對象的關(guān)系及作用
這篇文章主要介紹了Python?Asyncio中Coroutines,Tasks,Future可等待對象的關(guān)系及作用,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,需要的小伙伴可以參考一下2022-06-06Pytorch如何加載自己的數(shù)據(jù)集(使用DataLoader讀取Dataset)
這篇文章主要介紹了Pytorch如何加載自己的數(shù)據(jù)集(使用DataLoader讀取Dataset)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12