小田田的算法筆記——算法分析基本概念

算法分析基本概念

本章介紹一些簡單的算法,特別是與搜索和排序相關的那一類;其次講述用於算法設計和分析的基本概念。

順序搜索

// LinearSearch

//輸入:n個元素的數組A[1...n]和元素x。
//輸出:如果 x = A[j],1<= j <=n 則輸出j,否則輸出0.

j = 1
while(j < n)and(x != A[j])
    j = j+1
end while
if  x = A[j] then return j
  else return 0 

二分搜索

// BinarySearch

//輸入:n個元素的升序數組A[1...n]和元素x。
//輸出:如果 x = A[j],1<= j <=n 則輸出j,否則輸出0.

low = 1 ; high = n ; j = 0 ;
while(low <= high)and(j = 0)
     mid = (low + high)/2
     if x = A[mid] then j = mid
     else if x < A[mid] then high = mid - 1
          else low = mid + 1
end while
return j

在這裏插入圖片描述

合併兩個已排序的表

// Merge

//輸入:數組A[1...m]和它的三個索引 p,q,r,1<=p<=q<r<=m,
//兩個子數組 A[p..q] 和 A[q+1...r]各自按升序排列 
//輸出:合併兩個子數組 A[p...q] 和 A[q+1...r]的數組 A[p...r] 

comment : B[p...r]是個輔助數組
s = p ; t = q + 1 ; k = p
 while s <= q and t <= r
     if A[s] <= A[t] then
         B[k] = A[s]
         s = s + 1
     else 
	     B[k] = A[t]
	     t = t + 1
	 end if
	 k = k + 1
 end while
 if s = q + 1 then B[k...r] = A[t...r]
 else B[k...r] = A[s...q]
 A[p...r] = B[p...r]

在這裏插入圖片描述
在這裏插入圖片描述

選擇排序

// SelectionSort 

//輸入:n個元素的數組A[1...n]
//輸出:按非降序排列的數組 A[1...n]

for i = 1 to n-1
     k = i
     for j = i+1 to n
         if A[j] < A[k] then k = j
	 end for
	 if k != i then A[i] <-> A[k]
end for

在這裏插入圖片描述

插入排序

// InsertionSort 

//輸入:n個元素的數組A[1...n]
//輸出:按非降序排列的數組 A[1...n]

for i = 2 to n
    x = A[i]
    j = i - 1
    while(j > 0)and(A[j] > x)
    A[j+1] = A[j]
    j = j - 1
    end while
    A[j+1] = x
end for

在這裏插入圖片描述

自底向上合併排序

// BottomupSort

//輸入:n個元素的數組A[1...n]
//輸出:按非降序排列的數組 A[1...n]

t = 1
while t < n
    s = t; t = 2s ; i = 0
	while i + t <= n
	   Merge(A, i+1, i+s, i+t)
	   i = i + t
	end while
	if i + s < n Merge(A, i+1, i+s, n)  
end while

在這裏插入圖片描述
在這裏插入圖片描述

時間複雜性

  • 階的增長
    在這裏插入圖片描述
    在這裏插入圖片描述

元運算: 對任何計算步驟,它的代價總是以一個時間常量爲上界,而不管數據輸入或執行的算法,我們稱該步驟爲 “ 元運算 ” 。

算數運算,包括加、減、乘和除。
比較和邏輯運算。
賦值運算,包括遍歷表或樹的指針賦值。

  • O\Omicron\, 符號

在這裏插入圖片描述

  • Ω\Omega\, 符號

在這裏插入圖片描述

  • Θ\Theta\, 符號

在這裏插入圖片描述

  • 舉例
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

  • 複雜性類與 o 符號

在這裏插入圖片描述

空間複雜性

不包括用來存儲輸入的空間 , S(n) = O( T(n) )
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章