# 在描述演算法複雜度時,經常用到o(1), o(n), o(logn), o(nlogn)來表示對應演算法的時間複雜度, 這裡進行歸納一下它們代表的含義:
# 這是演算法的時空複雜度的表示。不僅僅用於表示時間複雜度,也用於表示空間複雜度。
# o後面的括號中有乙個函式,指明某個演算法的耗時/耗空間與資料增長量之間的關係。其中的n代表輸入資料的量。
# 比如時間複雜度為o(n),就代表資料量增大幾倍,耗時也增大幾倍。比如常見的遍歷演算法。
#2.氣泡排序:從左到右,陣列中相鄰的兩個元素進行比較
# o(n^2)對n個數排序,需要掃瞄n×n次
price = [3, 2, 4, 6, 6, 3, 8, 7, 10]
def maopao(price):
for i in range(len(price) - 1): # 控制迴圈次數
for j in range(len(price) - i -1):
if price[j] > price[j + 1]:
temp = price[j]
price[j]=price[j+1]
price[j+1]=temp
return price
print(maopao(price))
##[2, 3, 3, 4, 6, 6, 7, 8, 10]
#3.選擇排序
# 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,
# 然後,再從剩餘的未排序的元素中繼續尋找最小(大)元素,然後放到已排序元素的後邊。
# 直到所有元素均排序完畢。
def selectsort(arr):
for i in range(len(arr)-1): # 控制迴圈次數
min = i # 設定暫時最小值為無序區間第個元素
for j in range(i + 1, len(arr)): # 第二次迴圈讓min去和無序數列的數作比較找出真正最小值
if arr[min] > arr[j]:
min = j
t=arr[min]
arr[min] = arr[i] ##list[i]與list[min]互換位置
arr[i] = t
#arr[min],arr[i]=arr[i],arr[min]
return arr
print(selectsort([4, 2, 1, 5, 76, 64, 18]))
#[1, 2, 4, 5, 18, 64, 76]
def selectsort(arr):
for i in range(len(arr)-1): # 控制迴圈次數
min = i # 設定暫時最小值為無序區間第個元素
for j in range(i + 1, len(arr)): # 第二次迴圈讓min去和無序數列的數作比較找出真正最小值
if arr[min] > arr[j]:
min = j
#t=arr[min]
arr[min] = arr[i] ##list[i]與list[min]互換位置
arr[i] = arr[min]
#arr[min],arr[i]=arr[i],arr[min]
#[4, 2, 4, 5, 76, 64, 76]
def selectsort(arr):
for i in range(len(arr)-1): # 控制迴圈次數
min = i # 設定暫時最小值為無序區間第個元素
for j in range(i + 1, len(arr)): # 第二次迴圈讓min去和無序數列的數作比較找出真正最小值
if arr[min] > arr[j]:
min = j
# t=arr[min]
#arr[min] = arr[i] ##list[i]與list[min]互換位置
#arr[i] = arr[min]
arr[min],arr[i]=arr[i],arr[min]
return arr
print(selectsort([4, 2, 1, 5, 76, 64, 18]))
##[1, 2, 4, 5, 18, 64, 76] 氣泡排序和選擇排序 python
排序方法有很多,實際和面試中我們面對最多可能就是氣泡排序和選擇排序 氣泡排序 在給定資料列表中從第乙個開始逐一和下乙個值進行比較,如果發現下乙個值大於自己就調換下位置,以此類推,到最後便可以實現從小到大的排序 選擇排序 在給定資料列表中找到最小的乙個數值,然後依次和後面的進行對比,比如我們認為最左側...
Python的選擇排序和氣泡排序
選擇排序和氣泡排序的不同在於選擇排序是變數出來的數和後面各個位置去比較大小,而氣泡排序是將兩兩相鄰的兩個數做比較。選擇排序 import random list for i in range 10 s random.randint 1,101 print list for i in range 0,...
Python演算法(氣泡排序和選擇排序)
氣泡排序 重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,一層一層的將較大的元素往後移動,類似氣泡慢慢變大的過程。演算法思想 1.從第乙個和第二個開始比較,如果第乙個比第二個大,則交換位置 然後比較第二個和第三個,依次類推 2.經過第一輪迴圈,最大的數已經排在最後一位,所以重複以上操作,第二大的...