- 冒泡排序
算法复杂度O(n^2)
import numpy as np
def bubble_sort(li):
for i in range(len(li)-1):
exchange=False
for j in range(len(li)-i-1):
if li[j]>li[j+1]
li[j],li[j+1]=li[j+1],li[j]
print(li)
if not exchange:
return
- 选择排序
先写一个简单的,新建一个空列表,把每次遍历的最小值放进去。
def select_sort_simple(li):
li_new=[]
for i in range(len(li))
min_val=min(li)
li_new.append(min_val)
li.remove(min_val)
return li_new
这种写法里有两步 append remove 每步遍历n,增加了算法的复杂度。
最好的写法是 原地排序
改进版本:找到的最小数字和第一个数字进行交换
def select_sort(li):
for i in range(len(li)-1):
tmp=i
for j in range(i+1,len(li)):
if li[j]<li[tmp]
tmp=j
li[i],li[tmp]=li[tmp],li[i]