python 排序與搜索
阿新 • • 發佈:2018-07-04
改進 穩定 末尾 步驟 相等 進行 Coding 升序 算法
python 排序與搜索
學習了一下排序與搜索,做一下總結。如果那裏不對,請多指教。
排序算法:是一種能將一串數據依照特定順序進行排列的一種算法。
穩定性:穩定排序算法會讓原本有相等鍵值的紀錄維持相對次序。也就是如果一個排序算法是穩定的,當有兩個相等鍵值的紀錄R和S,且在原本的列表中R出現在S之前,在排序過的列表中R也將會是在S之前。
例如 (1,3)(2,3)(1,2)(2,1)進行排序
冒泡排序:
比較相鄰的元素。如果第一個比第二個大(升序),就交換他們兩個。持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
# coding=utf-8def 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 排序與搜索