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 排序算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中将已有链接的视频进行下载
- 下一篇: 用Python递归做个多层次的文件执行