1. 程式人生 > >python 排序與搜索

python 排序與搜索

改進 穩定 末尾 步驟 相等 進行 Coding 升序 算法

python 排序與搜索

學習了一下排序與搜索,做一下總結。如果那裏不對,請多指教。

  排序算法:是一種能將一串數據依照特定順序進行排列的一種算法。

  穩定性:穩定排序算法會讓原本有相等鍵值的紀錄維持相對次序。也就是如果一個排序算法是穩定的,當有兩個相等鍵值的紀錄R和S,且在原本的列表中R出現在S之前,在排序過的列表中R也將會是在S之前。

例如 (1,3)(2,3)(1,2)(2,1)進行排序

  冒泡排序

        比較相鄰的元素。如果第一個比第二個大(升序),就交換他們兩個。持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。

# coding=utf-8
def shenxu(alist): for j in range(len(alist)-1,0,-1): #range(開始的數,結束的數,步長) len長度 for i in range(j): if alist[i] > alist[i+1]: print "變換前",i,alist, alist[i], alist[i+1] = alist[i+1], alist[i] #兩個數交換 print "變換後",i,alist list1
= [1,9,8,2,3,7,4,6,0,5] shenxu(list1)

結果技術分享圖片

冒泡改進了一次叫定向冒泡排序;感覺和冒泡一樣就不多說了。

  • 最壞時間復雜度:O(n2)
  • 穩定性:穩定

選擇排序:是一種簡單直觀的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩余未排序元素中 繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

(下次在繼續寫)

python 排序與搜索