# 冒泡排序两层循环,一直比较并交换
def bubble_sort(arr):
change_number = len(arr) - 1
for i in range(change_number):
for j in range(i + 1, change_number + 1):
if arr[i] > arr[j]:
temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
return arr
# 选择排序与冒泡排序类似,区别在于选择排序并不是每次满足条件就交换,而是将最小值的索引存到
# k值中,在外层循环进行交换,这样可以减少交换次数,但是循环次数与冒泡排序相同
def selection_sort(arr):
change_number = len(arr)
for i in range(change_number):
k = i
for j in range(i + 1, change_number):
if arr[j] < arr[k]:
k = j
temp = arr[i]
arr[i] = arr[k]
arr[k] = temp
return arr
# 插入排序的特点是每次都与当前元素的前面元素们对比,满足条件时交换,从第二个数字开始循环
def insert_sort(arr):
change_number = len(arr)
for i in range(1, change_number):
j = i
while j > 0 and arr[j] < arr[j - 1]:
temp = arr[j - 1]
arr[j - 1] = arr[j]
arr[j] = temp
j = j - 1
return arr
arr = [8, 3, 0, 23, 6, 36, 89, 45, 3, 7, 9]
print(' 未排序数据:', arr)
# print(' 冒泡排序数据:', bubble_sort(arr))
# print(' 选择排序数据:', selection_sort(arr))
print(' 直接插入排序数据:', insert_sort(arr))