冒泡排序
冒泡排序的核心在于每次将数组中的最值往末尾移动。
使用的方法可称为 相邻项依次比较,根据结果决定是否换位。
时间复杂度 O(n^2),优点在于理解起来简单,代码行数少,缺点是用时相对久
def bubble(lst):
n = len(lst)
# 第一层 for 循环
for i in range(n):
for j in range(n-1-i):
if lst[j] > lst[j+1]:
lst[j],lst[j+1] = lst[j+1],lst[j]
return lst
选择排序
选择排序的核心在于依次找到最值从小到大(从大到小)排列。比如你有一把手牌,每次都出最小的,最后的出牌顺序就为从小到大。
def section(lst):
n = len(lst)
for i in range(n-1):
small = i
# 寻找最小的值
for j in range(i+1, n):
if lst[j] < lst[small]:
# 不断找到最小,返回下标
small = j
# 交换位置
lst[i], lst[small] = lst[small], lst[i]
return lst
插入排序
插入排序,从头到尾一个对象一个对象的排序,斗地主发牌后,从左到右一张一张将牌按顺序排列。
def insertion(lst):
n = len(lst)
for i in range(1, n):
pos = i
# 换牌条件
while pos>0 and lst[pos]<lst[pos-1]:
lst[pos],lst[pos-1] = lst[pos-1],lst[pos]
pos -= 1
return lst