冒泡排序图
# 冒泡排序,第一个往后比较,第一个小的话,第二个再往后比较,依次类推
#复杂度为n^2
def maopao(n):
m = len(n)
for i in range(m): # 先从第一个开始取
for j in range(i, m): # 用第一个往后依次取出
if n[i] > n[j]: # 如果第一个大于第二个,交换,依次类推
n[i], n[j] = n[j], n[i]
return n
d = maopao([1, 4, 3, 6, 4, 8, 7, 9])
print(d)
选择排序图
# 选择排序,从第一个开始依次往后比较,和第二个比较,第2个小,交换,交换后的第一个再次和第3个比较,依次类推
# 第一个一直和最后一个比较完,换第二个和第三 第四 ..最后一个比较依次类推
#复杂度为n^2
def choice(n):
m = len(n)
for i in range(m - 1): # 先取第一个
min_index = i # 先让第一个作为最小的
for j in range(i + 1, m): # 从第二个取到最后一个
if n[min_index] > n[j]: # 如果第一个大于第二个
min_index = j # 将小的(第二个)变为第一个,依次类推,用第一个和第三个比较,第三个小的话就把第三个和第一个交换,依次类推
if i != min_index: # 如果i 和 最小的不一样,就交换i和最小的顺序
n[min_index], n[i] = n[i], n[min_index]
return n
p = choice([1, 4, 3, 6, 4, 8, 7, 9])
print(p)
插入排序图
# 插入排序:先让第一个作为虚拟的表,让第二个和第一个比,排好顺序,然后形成前两个作为一个整体顺序
# 让第三个和第二个比,第三个比第二个小,第三和第二交换,然后再和第一个比,前三个形成正确顺序
#然后第四个依次和前一个比较,依次类推
#复杂度 n^2
def insert(n):
m = len(n)
for i in range(m):#从第一个开始取,取到第2个时
for j in range(i,0,-1): #取到第二个,让第二个往前比,取到第3个,让第三个和第二个和第一个分别比较
if n[j]<n[j-1]:#如果第2个小于第一个,让第2个变成第一个,如果第3个小于第二个,交换,再和第一个比
n[j],n[j-1]=n[j-1],n[j]
else:
break
return n
p = insert([1, 4, 3, 6, 4, 8, 7, 9])
print(p)