------冒泡排序-----------
arr = [1, 3, 5, 9, 2, 4, 8]
for i in range(len(arr) - 1):
for j in range(len(arr) - i - 1): if arr[j] > arr[j + 1]: arr[j], arr[j + 1] = arr[j + 1], arr[j] print(arr)
-------希尔排序---------- def shell(arr): n = len(arr) h = n // 2 + 1 while h >= 1: for i in range(h, n): j = i while j >= h and arr[j] < arr[j - 1]: arr[j], arr[j - 1] = arr[j - 1], arr[j] j -= h h = h // 2 print(arr) shell(arr)
------------快速排序-------------
def ks(L,low,high): i = low j = high if i >= j: return L key = L[i] while i < j: while i < j and L[j] >= key: j = j-1 L[i] = L[j] while i < j and L[i] <= key: i = i+1 L[j] = L[i] L[i] = key ks(L, low, i-1) ks(L, j+1, high) return L a=[51,49,6,9,21,7,13,32,85] ks(a,0,len(a)-1) print(a)
--------二分排序------------
def binary(arr): for i in range(1,len(arr)): low=0 high=i-1 key=arr[i] while low<=high: mid=(low+high)//2 if key<arr[mid]: high=mid-1 else: low=mid+1 for j in range(i-1,low-2,-1): arr[j+1]=arr[j] arr[low]=key # arr.pop(i) # arr.insert(low, key) print(arr) arr=[1,7,2,5,9,3] binary(arr)