python 冒泡

mac2026-06-17  8

列表每两个相邻的数,如果前面比后面大,则交换这个两个数一趟排序完成后,则无序区减少一个数,有序区增加一个数

大循环是要循环几次,小循环是里边的元素交换位置 ,小循环箭头要和下一个元素比较大小

import random def bubble_sort(li): for i in range(len(li)-1): 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) #列表生成试 循环1000, i随机数是0,10000 #li = [random.randint(0,10000) for i in range(1000)] #print(li) li = [3,2,4,6,5,9,8,7,1] bubble_sort(li)

n 是列表的长度 两次循环 时间复杂度: O(n2)

import random 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] #交换是true exchange = True print(li) #如果一遍跑下来没有交换还是false,就直接结束掉 if not exchange: return #列表生成试 #li = [random.randint(0,10000) for i in range(1000)] #print(li) #li = [3,2,4,6,5,9,8,7,1] li = [9,8,7,1,2,3,4,5,6] bubble_sort(li)

最新回复(0)