deftest(list1):
n =len(list1)for i inrange(n):for j inrange(0, n-i-1):if list1[j]> list1[j+1]:
list1[j], list1[j+1]= list1[j+1], list1[j]
list1 =[3,2,5,3,2,3,5,34,123]
test(list1)print(list1)
快速排序(最优时间复杂度:O(nlogn), 最坏时间复杂度:O(n^2))
defquick_sort(li, start, end):# 分治 一分为二# start=end ,证明要处理的数据只有一个# start>end ,证明右边没有数据if start >= end:return# 定义两个游标,分别指向0和末尾位置
left = start
right = end
# 把0位置的数据,认为是中间值
mid = li[left]while left < right:# 让右边游标往左移动,目的是找到小于mid的值,放到left游标位置while left < right and li[right]>= mid:
right -=1
li[left]= li[right]# 让左边游标往右移动,目的是找到大于mid的值,放到right游标位置while left < right and li[left]< mid:
left +=1
li[right]= li[left]# while结束后,把mid放到中间位置,left=right
li[left]= mid
# 递归处理左边的数据
quick_sort(li, start, left -1)# 递归处理右边的数据
quick_sort(li, left +1, end)if __name__ =='__main__':
l =[23,34,2342,23,34,35,54,64,6]# l = 3 [2,1,5,6,5,4]# [2, 1, 5, 6, 5, 4]
quick_sort(l,0,len(l)-1)print(l)
冒泡排序(时间复杂度:最优O(n) (表示遍历一次发现没有任何可以交换的元素,排序结束 最差O(n的平方))def test(list1): n = len(list1) for i in range(n): for j in range(0, n-i-1): if list1[j] > list1[j+1]: list1[j], list1[j+1] = list1[j+1], list1[j]lis.