------冒泡排序-----------
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)