一、冒泡排序
# [8,9,7,6,5,4,3,2,1] 升序
# 第1趟 i=0 [8,7,6,5,4,3,2,1, 9] 获取一个最大数,放在列表最右边
# 第2趟 i=1 [7,6,5,4,3,2,1, 8,9] 获取第二大的数,放在列表最右边
# 第3趟 i=2 [6,5,4,3,2,1, 7,8,9] 获取第三大的数,放在列表最右边
# 第4趟 i=3 [5,4,3,2,1, 6,7,8,9] 获取第四大的数,放在列表最右边
# 第5趟 i=4 [4,3,2,1, 5,6,7,8,9] 获取第五大的数,放在列表最右边
# 第6趟 i=5 [3,2,1, 4,5,6,7,8,9] 获取第六大的数,放在列表最右边
# 第7趟 i=6 [2,1, 3,4,5,6,7,8,9] 获取第七大的数,放在列表最右边
# 第8趟 i=7 [1, 2,3,4,5,6,7,8,9] 获取第八大的数,放在列表最右边
#
list1 = [8,9,7,6,5,4,3,2,1]
for i in range(len(list1)-1): # 趟数
for j in range(len(list1)-1-i): # 每一趟中,遍历除了已经排好的最大数以外的 剩下的数
if list1[j] > list1[j+1]:
list1[j], list1[j+1] = list1[j+1], list1[j]
print(list1)
二、快速排序
def quick_sort(mylist):
# 判断临界值
if len(mylist) <= 1:
return mylist
# 找基准数
n = mylist.pop(len(mylist)//2)
# 遍历,把小于基准数的元素放在左边列表,大于基准数的放在右边列表中
left = []
right = []
for i in mylist:
if i < n:
left.append(i)
else:
right.append(i)
# print(left, [n], right) # [4, 1, 3, 0, 2] [5] [6, 8, 9, 7]
# 递归调用
return quick_sort(left) + [n] + quick_sort(right)
list1 = [4,1,6,3,8,5,0,9,7,2]
print(quick_sort(list1))
三、选择排序
# [8,9,5,6,7,4,3,2,1] # 升序
# 第1趟 i=0 [1, 9,8,6,7,5,4,3,2]
# 第2趟 i=1 [1,2, 9,8,7,6,5,4,3]
# 第3趟 i=2 [1,2,3, 9,8,7,6,5,4]
# 第4趟 i=3 [1,2,3,4, 9,8,7,6,5]
# 第5趟 i=4 [1,2,3,4,5, 9,8,7,6]
# 第6趟 i=5 [1,2,3,4,5,6, 9,8,7]
# 第7趟 i=6 [1,2,3,4,5,6,7, 9,8]
# 第8趟 i=7 [1,2,3,4,5,6,7,8, 9]
#
list1 = [8,9,5,6,7,4,3,2,1]
for i in range(len(list1)-1): # 趟数
for j in range(i+1, len(list1)):
if list1[i] > list1[j]:
list1[i], list1[j] = list1[j], list1[i]
print(list1)