演算法衡量的標準:
1.時間複雜度:
兩個程式的執行時間如何衡量?
答:用time模組來判斷,time.time()來進行計算,前提是兩段程式必須執行在同乙個硬體相同(cpu)的環境下,才會有意義
因此,我們使用時間差的方式來衡量乙個程式是否快慢沒有任何的意義。所以使用程式執行的大概次數,來衡量程式的執行快慢,這種衡量的方式稱之為時間複雜度,使用o()來記
如何判斷時間複雜度?
迴圈減半的過程o(logn)
幾次迴圈就是n的幾次方的複雜度
2.空間複雜度:
這段程式執行的過程,是否占用了記憶體空間
演算法: 排序演算法:
氣泡排序
選擇排序
插入排序
快速排序
希爾排序
桶排序(計數排序)
動態規劃 貪心(分糖果,人民幣問題) 揹包問題
查詢:
順序查詢
二分查詢
# 氣泡排序
# 時間複雜度:最差的情況:o(n^2) 最好的情況:o(n)
# 空間複雜度: o(1)
# 先找到最大的數放列表末尾位置,從右往左排
defbubble_sort
(li)
:for i in
range
(len
(li)-1
):for j in
range
(len
(li)-1
- i)
:if li[j]
> li[j +1]
: li[j]
, li[j +1]
= li[j +1]
, li[j]
# 改良
defbubble_sort2
(li)
:for i in
range
(len
(li)-1
):flag =
true
for j in
range
(len
(li)-1
- i)
:if li[j]
> li[j +1]
: li[j]
, li[j +1]
= li[j +1]
, li[j]
flag =
false
if flag:
return
# 選擇排序
# 時間複雜度是: o(n^2)
# 先找到最小的數放在列表的起始位置,從左往右排
defselect_sort
(li)
:for i in
range
(len
(li)):
minloc = i
for j in
range
(i +1,
len(li)):
if li[minloc]
> li[j]
: li[minloc]
, li[j]
= li[j]
, li[minloc]
# 插入排序
# 時間複雜度: o(n^2)
definsert_sort
(li)
:for i in
range(1
,len
(li)):
tmp = li[i]
j = i -
1while j >=
0and li[j]
> tmp:
li[j +1]
= li[j]
j = j -
1 li[j -1]
= tmp
# 快速排序
# 時間複雜度: o(nlogn)
defpartition
(li, left, right)
: tmp = li[left]
while left < right:
while left < right and li[right]
>= tmp:
right = right -
1 li[left]
= li[right]
while left < right and li[left]
<= tmp:
left = left +
1 li[right]
= li[left]
li[left]
= tmp
return left
defquick_sort
(li, left, right)
:if left < right:
mid = partition(li, left, right)
# 歸位函式
quick_sort(li, left, mid -1)
quick_sort(li, mid +
1, right)
li =[7
,5,4
,6,3
,8,2
,9,1
]# li = [1, 2, 3, 4, 5, 6]
# bubble_sort(li)
# select_sort(li)
# select_sort(li)
quick_sort(li,0,
len(li)-1
)print
(li)
常見的演算法
private static int binarysearch int list,int target else if target list mid else if target list mid return 1 public static void bubblesort int arr 基本思...
常見的排序演算法
一 氣泡排序 include include void swap int a,int b void bubblesort int arr,int size int main void bubblesort a,5 for int i 0 i 5 i cout 二 選擇排序 void selectio...
常見的排序演算法
需要包含的標頭檔案 include stdafx.h include include include 氣泡排序是穩定排序 時間複雜度 o n 2 void swap int a,int b void bubblesort int a,int n void printnum int a,int n a...