氣泡排序:
#_*_coding: utf-8 _*_:
def bubblesort(list1):
for j in range(0,len(list1)-1):
#增加乙個計數器
count = 0
for i in range(len(list1)-1-j,j,-1):
if list1[i] < list1[i-1]:
list1[i],list1[i-1] = list1[i-1],list1[i]
count += 1
if count == 0:
return list1
return list1
if __name__ == '__main__':
l = [3,1,5,2]
bubblesort(l)
print(l)
#當j=0,i=[3,0],當i=3時,2<5,l[3]與l[2]交換,l=[3,1,2,5];
#當j=1,i=[2,0],當i=2時,2>1,l[2]與l[1]不交換,l=[3,1,2,5];
#當j=2,i=[1,0],當i=1時,3>1,l[1]與l[0]不交換,l=[1,3,2,5],l[0]被排序。
#迴圈len(list1)
時間複雜度:
好的情況為n
壞的情況為n**2
演算法學習 6
計數排序是假設陣列a中的元素都是在0到k區間內的整數。構建乙個陣列c 0,k 初始化為 1,如果陣列a中的元素互異的話,那麼把a的元素拷貝到c中 c a i a i 然後遍歷c,把非 1的元素依次拷貝到陣列a中即可完成排序。但陣列有元素相等要怎麼處理了。元素互異的做法,還可以是c 0,k 初始化為0...
玩轉python(6)協程
多工系統一般都需要解決乙個問題 多個任務如何排程。搶占式排程就是一種很常見的任務排程機制。以單核模式下的程序排程為例,乙個程序處於執行狀態,其他的處於就緒佇列,等到當前執行的程序放棄cpu的使用權,系統將cpu立刻分配給新到達的程序,由於任務的執行順序是不確定的,看上去就像一堆任務在競爭cpu的使用...
玩轉python(6)協程
多工系統一般都需要解決乙個問題 多個任務如何排程。搶占式排程就是一種很常見的任務排程機制。以單核模式下的程序排程為例,乙個程序處於執行狀態,其他的處於就緒佇列,等到當前執行的程序放棄cpu的使用權,系統將cpu立刻分配給新到達的程序,由於任務的執行順序是不確定的,看上去就像一堆任務在競爭cpu的使用...