python中的排序方法

2022-08-09 18:45:12 字數 2296 閱讀 3027

插入排序:插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的、個數加一的有序資料,演算法適用於少量資料的排序;首先將第乙個作為已經排好序的,然後每次從後的取出插入到前面並排序;

def

insert_sort(ilist):

for i in

range(len(ilist)):

for j in

range(i):

if ilist[i] ilist.insert(j, ilist.pop(i))

break

return ilist

氣泡排序:它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成

def

bubble_sort(blist):

count =len(blist)

for i in

range(0, count):

for j in range(i + 1, count):

if blist[i] >blist[j]:

blist[i], blist[j] =blist[j], blist[i]

return

blist

blist = bubble_sort([4,5,6,7,3,2,6,9,8])

print(blist)

快速排序:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列

def

quick_sort(qlist):

if qlist ==:

return

else

: qfirst =qlist[0]

qless = quick_sort([l for l in qlist[1:] if l qmore = quick_sort([m for m in qlist[1:] if m >=qfirst])

return qless + [qfirst] +qmore

qlist = quick_sort([4,5,6,7,3,2,6,9,8])

選擇排序:第1趟,在待排序記錄r1 ~ r[n]中選出最小的記錄,將它與r1交換;第2趟,在待排序記錄r2 ~ r[n]中選出最小的記錄,將它與r2交換;以此類推,第i趟在待排序記錄r[i] ~ r[n]中選出最小的記錄,將它與r[i]交換,使有序序列不斷增長直到全部排序完畢

def

select_sort(slist):

for i in

range(len(slist)):

x =i

for j in

range(i, len(slist)):

if slist[j] x =j

slist[i], slist[x] =slist[x], slist[i]

return

slist

slist = select_sort([4,5,6,7,3,2,6,9,8])

歸併排序:採用分治法(divide and conquer)的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列;即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併

def

merge_sort(array):

defmerge_arr(arr_l, arr_r):

array =

while len(arr_l) and

len(arr_r):

if arr_l[0] <=arr_r[0]:

elif arr_l[0] >arr_r[0]:

if len(arr_l) !=0:

array +=arr_l

elif len(arr_r) !=0:

array +=arr_r

return

array

defrecursive(array):

if len(array) == 1:

return

array

mid = len(array) // 2arr_l =recursive(array[:mid])

arr_r =recursive(array[mid:])

return

merge_arr(arr_l, arr_r)

return recursive(array)

python中的排序

coding utf 8 from operator import itemgetter a 1,4,3,2,5 b 5,2,3 6,0,1 1,3,2 print sorted a 預設為公升序排序 print sorted a,reverse true reverse為true時,降序排列 pr...

Python中的排序

最近在學習python,想隨便 寫一下,python 寫一些 排序,排序 演算法 那麼多,我也不一一介紹,寫幾個比較簡單的,冒泡,選擇,快排,插入排序 用 python 實現一下,當然 也有參考 網上的寫法,相互學習吧,直接進入正題 氣泡排序 思想 我想大家 都應該理解就是 相鄰 兩個key 進行比...

python中的排序

1.sort.py 2.這個類用來演示如何對自定義物件進行排序 3.class sortobj 4.a 0 5.b 6.def init self,a,b 7.self.a a 8.self.b b 9.def printab self 10.print self.a,self.b 11.12.演示...