冒泡排序
def bubbleSort(arr):
n = len(arr)
for i in range(n):
for j in range(n - 1 - i):
if arr[j] < arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
arr = [12, 11, 13, 5, 6]
bubbleSort(arr)
print("排序后的数组:")
for i in range(len(arr)):
print("%d" % arr[i])
插入排序
def insertionSort(arr):
for i in range(1, len(arr)):
j = i - 1
key = arr[i]
while j >= 0 and key > arr[j]:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
arr = [12, 11, 6, 5, 13]
insertionSort(arr)
print("排序后的数组:")
for i in range(len(arr)):
print("%d" % arr[i])
选择排序
def choseSort(arr):
for i in range(len(arr)):
key = i
for j in range(i+1, len(arr)):
if arr[j] > arr[key]:
key = j
arr[key], arr[i] = arr[i], arr[key]
arr = [12, 11, 13, 5, 6]
choseSort(arr)
print("排序后的数组:")
for i in range(len(arr)):
print("%d" % arr[i])
希尔排序
import math
def shellsSort(arr):
length = len(arr) # 获取数组长度
gap = 1 # 将数组分割成gap个区间
while (gap < length / 3): # 动态规划gap的数量 数学认为length / 3 + 1 效率最高
gap = gap * 3 + 1
while gap > 0: # 当gap区间大于0就一直循环排序
for i in range(gap, length): # 从gap开始到length
temp = arr[i] # 建立一个存储arr[gap]到arr[length]的缓存区,用于交换值
j = i - gap # j为区间的首个值的索引
while j >= 0 and arr[j] > temp: # 当j这个索引为正,并且当它大于缓存区的值时开始交换
arr[j + gap] = arr[j] # 交换值
j -= gap # 如果j减去gap还有值,就让这个值和temp再比较一次
arr[j + gap] = temp # 最后将缓存值赋值给arr[j+gap] #因为j循环后多减去一次gap
gap = math.floor(gap / 3)
return arr
arr = [12, 11, 15, 7, 5, 6, 8, 1, 2, 3, 14, 4, 9, 10, 13]
shellsSort(arr)
print("排序后的数组:")
for i in range(len(arr)):
print("%d" % arr[i])