冒泡排序
时间复杂度:n平方
空间复杂度:1
代码实现:
def sort1(data):
for i in range(0,len(data)-1):
for j in range(0,len(data)-i-1):
if data[j]>data[j+1]:
data[j],data[j+1] = data[j+1],data[j]
return data
选择排序
时间复杂度:n平方
空间复杂度:1
代码实现:
def sort2(data):
for i in range(len(data)-1,0,-1):
for j in range(i):
if data[i]>data[j]:
data[i],data[j] = data[j],data[i]
return data
插入排序
时间复杂度:n平方
空间复杂度1
代码实现:
def sort3(data):
for i in range(len(data)):
for j in range(i):
if data[i]<data[j]:
data.insert(j,data.pop(i))
return data
快速排序
时间复杂度: nlog2n
空间复杂度:nlog2n
代码实现:
def paixu(data,l,r):
# 进行一次选择排序
# 选择基准
p = data[l]
while l < r:
while l < r and data[r]>=p:
r = r - 1
data[l] = data[r]
while l < r and data[l]<=p:
l = l + 1
data[r] = data[l]
data[l] = p
# 返回基准最终的位置
return l
def sort4(data,l,r):
if l < r:
p = paixu(data,l,r)
# 进行调用
sort4(data,l,p-1)
sort4(data,p+1,r)
return data