1. 程式人生 > >排序——冒泡,選擇,插入排序

排序——冒泡,選擇,插入排序

氣泡排序和插入排序的時間複雜度O(n)~O(n2),而選擇排序的時間複雜度為O(n2)。
氣泡排序:作為程式設計超級入門級排序手段,思想比較簡單。陣列的每個元素都與後一個進行比較,第一輪可以確定末尾的位置的數值。經過n輪可以確定序列

def bubble_sort(alist):
    for i in range(len(alist)-1,0,-1):
        for j in range (i):
            if alist[j]>alist[j+1]:
                alist[j],alist[j+1]=alist[j+1
],alist[j]

選擇排序:氣泡排序是針對數值來說的, 而選擇排序我感覺是針對位置來說,從最小的或者最大的開始確定每個數值的位置,對於增序來說,最小的值必定排在第一個位置。

def selection_sort(alist):
    n=len(alist)
    for i in range(n-1):
        min_index=i
        for j in range(i+1,n):
            if alist[j]<alist[i]:
                min_index=j
        if min_index !=i:
            alist[i],alist[min_index]=alist[min_index],alist[i]

插入排序:插入排序的實現,要保證排序過的序列一定正確的序列,然後在未排序序列中的元素依次插入。

def insert_sort(alist):
    for i in range(1,len(alist)):
        for j in range(i,0,-1):
            if alist[j]<alist[j-1]:
                alist[j],alist[j-1]=alist[j-1],alist[j]