LOW逼三人組(一) 冒泡演算法

2022-03-17 08:27:32 字數 2767 閱讀 9111

排序

1、氣泡排序

冒泡演算法

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] #

互換數data=list(range(1000)) #

1000個數

random.shuffle(data) #

打亂這個序列

bubble_sort(data) #

將打亂後的序列傳送到冒泡演算法函式

print(data) #

列印排序後的序列

列印後的效果為:

``````````````````````

改進後的冒泡演算法:

import

random

def bubble_sort_1(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]

exchange=true

ifnot

exchange: # 如果沒有交換就直接退出

break

data=list(range(1000))

random.shuffle(data)

bubble_sort_1(data)

print(data)

改進前和改進後的冒泡演算法進行對比:

import random         #

隨機模組

import

time

def cal_time(func): #

裝飾器 ,用來檢測演算法所執行的時間

t1=time.time()

result=func(*args,**kwargs)

t2=time.time()

print("

%s running time: %s secs.

" %(func.__name__,t2-t1))

return

result

return

@cal_time

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] #

互換數#

data=list(range(1000)) # 1000個數

#random.shuffle(data) # 打亂這個序列

#bubble_sort(data) # 將打亂後的序列傳送到冒泡演算法函式

#print(data) # 列印排序後的序列

@cal_time

def bubble_sort_1(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]

exchange=true

ifnot

exchange:

break

data=list(range(1000))

random.shuffle(data)

bubble_sort(data)

bubble_sort_1(data)

print(data)

view code

列印後的效果為

``````````````````````

lowB三人組演算法 氣泡排序 選擇排序 插入排序

時間複雜度 o n2 演算法穩定 實現點 時時比較,時時交換 def bubble sort li for i in range len li 1 第i趟 exchange false for j in range len li i 1 if li j li j 1 li j li j 1 li j...

演算法3(low B三人組)

首先,列表每兩個相鄰的數,如果前邊的比後邊的大,那麼交換這兩個數 時間複雜度 o n2 def bubble sort lis 氣泡排序 param lis 無序列表 return 有序的從小到大的列表 for i in range 0,len lis 1 可能存在列表已經排好的情況,加標記 exc...

排序演算法之low B三人組

列表排序 將無序列表變成有充列表 應用場景 各種榜單,各種 給二分法排序使用,給其他演算法使用 輸入無序列表,輸出有序列表 公升序或降序 排序low b三人組 首先,列表每兩個相鄰的數做比較,如果前邊的數比後邊的數大,那麼交換這兩個數 def bubble sort l1 for i in rang...