扣丁學(xué)堂 2018-09-13 09:49:35 大家在學(xué)習(xí)Python的時候,,會接觸到冒泡排序和選擇排序這兩個詞,,那它具體是怎么回事呢,?今天小編就來給大家講一講吧,希望可以幫助到大家,,也給參加Python培訓(xùn)的同學(xué)一個參考,。 Python數(shù)據(jù)結(jié)構(gòu)之冒泡排序 冒泡排序是一種基礎(chǔ)排序算法,在python中,,我們利用列表的的方式來完成,,它對列表中的元素進(jìn)行重復(fù)的遍歷,在遍歷的同時進(jìn)行比較,,如果兩個數(shù)沒有按照我們規(guī)定的順序進(jìn)行排列,,就按照我們預(yù)先設(shè)定好的是順序或者逆序輸出,類似于燒開水時的氣泡,主要操作如下: 比較相鄰的元素,。如果第一個比第二個大(升序),,就交換他們兩個。 對每一對相鄰元素作同樣的工作,,從開始第一對到結(jié)尾的最后一對,。這步做完后,最后的元素會是最大的數(shù),。 針對所有的元素重復(fù)以上的步驟,,除了最后一個。 持續(xù)每次對越來越少的元素重復(fù)上面的步驟,,直到?jīng)]有任何一對數(shù)字需要比較,。 時間復(fù)雜度 最優(yōu)時間復(fù)雜度:O(n)(表示遍歷一次發(fā)現(xiàn)沒有任何可以交換的元素,排序結(jié)束,。) 最壞時間復(fù)雜度:O(n2) 穩(wěn)定性:穩(wěn)定 附上完整代碼: defbubble_sort(list): forjinrange(len(list)-1,0,-1): foriinrange(j): iflist[i]>list[i+1]: list[i],list[i+1]=list[i+1],list[i] List=[1,3,2,8,4,6,9,7] bubble_sort(List) print(List) Python數(shù)據(jù)結(jié)構(gòu)之選擇排序 選擇排序(select_sort)是一個基礎(chǔ)排序,,它主要通過查找已給序列中的元素的最大或者最小元素,然后將其放在序列的起始位置或者結(jié)束位置,,并通過多次這樣的循環(huán)完成對已知序列的排序,,在我們對n個元素進(jìn)行操作時,我們至少需要n-1次,。 defselect_sort(list): n=len(list) #進(jìn)行n-1次操作 foriinrange(n-1): min_dex=i #記錄最小的位置 forjinrange(i+1,n): #從i+1選取最小位置 iflist[j]<list[min_dex]: min_dex=j #最小位置不對應(yīng)進(jìn)行交換 ifmin_dex!=i: list[i],list[min_dex]=list[min_dex],list[i] List=[0,3,1,2,9,4,6,5,8,7] select_sort(List) print(List) 以上就是扣丁學(xué)堂Python在線學(xué)習(xí)小編給大家分享的文章,,希望對小伙伴們有所幫助,其實無論是哪種排序,,都應(yīng)該節(jié)省計算的時間,,并且要有好的創(chuàng)意。 |
|