- 冒泡排序
算法复杂度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]
print(li)
- 插入排序
import random
def insert_sort(li):
for i in range(1,len(li)): # i 表示摸到的牌的下标
tmp=li[i]
j=i-1 # j是手里的牌的下标
while j>=0 and li[j]>tmp:
li[j+1]=li[j]
j-=1
li[j+1]=tmp
li=list(range(10))
random.shuffle(li)
print(li)
insert_sort(li)
print(li)
本文介绍了Python中实现的三种简单排序算法:冒泡排序,包括其时间复杂度为O(n^2);选择排序,通过新建空列表存放最小值,以及原地排序的改进版本,通过找到的最小数字与第一个数字交换来优化算法。
530

被折叠的 条评论
为什么被折叠?



