日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 排序算法

發布時間:2024/9/30 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 排序算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

冒泡排序
算法思想:

1、相鄰元素對比,如果前面元素比后面的大,進行交換,直至最后一個元素,一輪結束之后,最后一個元素為最大值;
2、后一輪進行的列表數量比前一輪少一個;
3、反復進行上面兩步,直至沒有元素進行對比為止.

復雜度:

冒泡排序的平均復雜度為O(n2),當原列表為正序排列時,復雜度為O(n),為倒序排列時,復雜度為O(n2),比較次數為n*(n-1)/2,關鍵字移動次數為n*(n-1)/4

穩定性:

穩定。列表中每次交換是相鄰元素之間的交換,如果相鄰的兩個元素相等,不會出現交換情況,因而相同元素的前后順序沒有發生改變,故而冒泡排序為穩定排序算法

代碼:

--------------------------------------------------------------------注:如果你對python感興趣,我這有個學習Python基地,里面有很多學習資料,感興趣的+Q群:895817687--------------------------------------------------------------------def bubble_sort(array):for i in range(len(array) - 1): # 這個循環負責設置冒泡排序進行的次數for j in range(len(array) - i - 1): if array[j] > array[j + 1]:array[j], array[j + 1] = array[j + 1], array[j] #交換return nums

選擇排序
算法思想:

1、初始狀態中有序序列為空,無序序列為列表長度;
2、將第一個元素與其余元素對比,如果第一個元素大于第二個元素,將min下標替換為第二個元素,依此類推,獲取最小元素的下標,與i替換;
3、此時有序序列為1,無序序列列表長度-1;
4、將剩余的無序序列反復進行第二步,直至無序序列為1;

復雜度:

選擇排序的平均復雜度為O(n2)。每進行一輪操作,最多交換一次,因此交換操作介于0與n-1之間,比較操作次數為n*(n-1)/2

穩定性:

不穩定。一個list,如果第一個元素與第四個元素相同,進行比較時,最小元素在第四個元素之后,第一個元素與最小元素交換,此時兩個相等的元素已經失去原有的前后順序,故不穩定。比如列表[3,9,7,3,4,1,2],為了方便理解,在列表后面添加對應的下標[3(0),9(1),7(2),3(3),4(4),1(5),2(6)],列表無序,將第一個元素與其他元素做對比,發現元素值為1,下標為5為最小值,因此將3(0)與1(5)進行交換,得到的序列結果為[1(5),9(1),7(2),3(3),4(4),3(0),2(6)],由此可見,兩個相同的元素3,順序發生了改變,故而不穩定。

代碼:

def selection_sort(list2):for i in range(0, len (list2)-1):min_ = ifor j in range(i + 1, len(list2)):if list2[j] < list2[min_]:min_ = jlist2[i], list2[min_] = list2[min_], list2[i] # swap

總結

以上是生活随笔為你收集整理的python 排序算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。