冒泡排序(最好是O(n), 最坏O(n2))
原理:
拿自己与上面一个比较,如果上面一个比自己小就将自己和上面一个调换位置,依次再与上面一个比较,第一轮结束后最上面那个一定是最大的数
冒泡排序代码
def bubble_sort(blist):
count = len(blist)
for i in range(0, count):
for j in range(i + 1, count):
if blist[i] > blist[j]:
blist[i], blist[j] = blist[j], blist[i]
return blist
blist = bubble_sort([4,5,6,7,3,2,6,9,8])
print(blist)
选择排序
先假定第一个是最小的,依次与其他数比,如果其他数中有比第一个数小就假定这个更小的最小
再比,第一轮就可以找到最小的那个放到0号位置,然后在假定1号位置数最小与剩下比较,再找到第二小的数放到第1号位置
选择排序代码
def select_sort(slist):
for i in range(len(slist)):
x = i
for j in range(i, len(slist)):
if slist[j] < slist[x]:
x = j
slist[i], slist[x] = slist[x], slist[i]
return slist
slist = select_sort([4,5,6,7,3,2,6,9,8])
插入排序(比如码牌)
列表被分为有序区和无序区两个部分,最初有序区只有一个元素
每次从无序区选择一个元素,插入到有序区的位置,直到无序区变空
插入排序代码
def insert_sort(ilist):
for i in range(len(ilist)):
for j in range(i):
if ilist[i] < ilist[j]:
ilist.insert(j, ilist.pop(i))
break
return ilist
print(insert_sort(ilist=[5,2,9,6,8,4]))