淺談python常用程序算法
一。冒泡排序:
1.冒泡排序是將無(wú)序的數(shù)字排列成從小到大的有序組合:
過(guò)程:對(duì)相鄰的兩個(gè)元素進(jìn)行比較,對(duì)不符合要求的數(shù)據(jù)進(jìn)行交換,最后達(dá)到數(shù)據(jù)有序的過(guò)程。
規(guī)律:
1.冒泡排序的趟數(shù)時(shí)固定的:n-1
2.冒泡排序比較的次數(shù)時(shí)固定的:n*(n-1)/2
3.冒泡排序交換的次數(shù)時(shí)不固定的:但是最大值為:n*(n-1)/2
注意:n = 數(shù)據(jù)個(gè)數(shù),排序過(guò)程中需要臨時(shí)變量存儲(chǔ)要交換的數(shù)據(jù)
eg:
l=[688, 888, 711,999,1,4,6]
for i in range(len(l)-1):
for j in range(len(l)-1):
if l[j]>l[j+1]:
tmp=l[j]
l[j]=l[j+1]
l[j+1]=tmp
print(l)
二。選擇排序:
list=[10,3,5,2,9]
過(guò)程,循環(huán)當(dāng)前列表,將當(dāng)前循環(huán)到的值與余下的每個(gè)數(shù)字相比較,如果比當(dāng)前值小,就與當(dāng)前值交換位置。
eg:
l=[688, 888, 711,999,1,4,6]
for i in range(len(l)-1):
for j in range(i+1,len(l)):
if l[j]<l[i]:
tmp=l[i]
l[i]=l[j]
l[j]=tmp
print(l)
優(yōu)化:每次找到最小值后不立即替換,而是等待本次循環(huán)結(jié)束再替換,減少了操作的次數(shù),效率提高了
l=[688, 888, 711,999,1,4,6]
for i in range(len(l)-1):
Min=i
for j in range(i+1,len(l)):
if l[Min] > l[j]:
Min=j
tmp=l[Min]
l[Min]=l[i]
l[i]=tmp
print(l)
三。插入排序:
插入排序(Insertion Sort)的基本思想是:將列表分為2部分,左邊為排序好的部分,右邊為未排序的部分,循環(huán)整個(gè)列表,每次將一個(gè)待排序的記錄,按其關(guān)鍵字大小插入到前面已經(jīng)排好序的子序列中的適當(dāng)位置,直到全部記錄插入完成為止。
eg:
array=[9,8,7,6,5,4,3,2,1]
for i in range(1,len(array)):
current_val=array[i]
current_position=i
while current_position >0 and array[current_position-1] > current_val:
array[current_position]=array[current_position-1]
current_position-=1
array[current_position]=current_val
print(array)
以上所述是小編給大家介紹的python常用程序算法詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Python?add()集合中添加元素的實(shí)現(xiàn)
本文主要介紹了Python?add()集合中添加元素的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
python人工智能tensorflow優(yōu)化器Optimizer算法匯總
這篇文章主要為大家介紹了python人工智能tensorflowtf優(yōu)化器Optimizer算法匯總,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Python如何使用正則表達(dá)式分割字符串舉4例說(shuō)明
在Python編程中我們經(jīng)常需要對(duì)字符串進(jìn)行分割操作,下面這篇文章主要給大家介紹了關(guān)于Python如何使用正則表達(dá)式分割字符串的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05
給你一面國(guó)旗 教你用python畫(huà)中國(guó)國(guó)旗
朋友圈許多小伙伴都在發(fā):請(qǐng)給我一面五星紅旗的動(dòng)態(tài),這篇文章就主要教大家如何使用python畫(huà)中國(guó)國(guó)旗,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
學(xué)習(xí)和使用python的13個(gè)理由
在本篇文章里小編給大家整理了關(guān)于學(xué)習(xí)和使用python的13個(gè)理由以及相關(guān)知識(shí)點(diǎn),需要的朋友們參考下。2019-07-07
matplotlib簡(jiǎn)介,安裝和簡(jiǎn)單實(shí)例代碼
這篇文章主要介紹了matplotlib簡(jiǎn)介,安裝和簡(jiǎn)單實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
Python實(shí)現(xiàn)的求解最大公約數(shù)算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的求解最大公約數(shù)算法,涉及Python數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-05-05
Python實(shí)現(xiàn)輸出某區(qū)間范圍內(nèi)全部素?cái)?shù)的方法
這篇文章主要介紹了Python實(shí)現(xiàn)輸出某區(qū)間范圍內(nèi)全部素?cái)?shù)的方法,涉及Python數(shù)值運(yùn)算、排序、判斷等相關(guān)操作技巧,需要的朋友可以參考下2018-05-05

