冒泡排序
冒泡排序(Bubble Sort)是一种简单直观的排序算法。它重复地走访过列表,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
代码
def BubbleSort(lst):
top = len(lst) #确定列表长度
for i in range(top): #遍历次数在此
top -= 1 #确保遍历一次后不再重复比较最右边最大的数字
for j in range(top):
if lst[j] > lst[j+1]:
lst[j],lst[j+1] = lst[j+1],lst[j]
return lst
选择排序
选择排序是一种简单直观的排序算法。它通过反复遍历列表,选出最大/小的数字按顺序排到左/右边,直到全部数字排序完毕。
代码
def SelectionSort(lst):
for i in range(len(lst)-1):
flag = i
for j in range(i+1,len(lst)):
if lst[j] < lst[flag]:
flag = j
if i != flag: #如果i的位置不是最小数,则交换
lst[i],lst[flag] = lst[flag],lst[i]
return lst
插入排序
类似于打牌的排序算法,从左至右依次把未排序列的数字插入已排序列之中。
def InsertionSort(lst):
for i in range(len(lst)):
flag = i -1 #插旗
current = lst[i]
while flag >= 0 and lst[flag] > current: #从旗帜位置递减,依次寻找插空位置
lst[flag+1] = lst[flag]
flag -= 1
lst[flag+1] = current
return lst