排序当中最基础也是必须要会默写的三种排序方式,冒泡,选择排序和插入,一个个来
冒泡。原因很简单,从第一个位置开始,当后一个位置的数比前一个位置小的时候,交换两个位置,如果大于直接指针向后移动一个位置
# 冒泡排序
def bubble_sort(list):
for i in range(len(list) - 1):
for j in range(len(list) - i - 1):
if list[j] > list[j+1]:
list[j], list[j+1] = list[j+1], list[j+1]
思考,当一次已经完成排序,后面就不用继续排序啦。可以做个哨兵进行判断
def bubble_sort(li):
for i in range(len(li) -1 ):
for j in range(len(li) -i -1):
exchange= False
if li[j] > li[j+1]:
li[j], li[j+1] = li[j+1], li[j]
exchange = True
if not exchange:
return
选择排序
def select_sort(li):
for i in range(len(li) -1):
min_loc = i
for j in range(i , len(li)):
if li[j] < li[min_loc]:
min_loc = j
li[i], li[min_loc] = li[min_loc], li[i]
插入排序,存在有已经完成插入区和准备插入区
def insert_sort(li):
for i in range(1, len(li)):
tmp = li[i] # 把手里的牌独立出来
j = i - 1 # 已经排序好的牌的下标
while j >= 0 and li[j] > tmp:
li[j+1] = li[j]
j -= 1
li[j+1] = tmp