小田田的算法笔记——算法分析基本概念

算法分析基本概念

本章介绍一些简单的算法,特别是与搜索和排序相关的那一类;其次讲述用于算法设计和分析的基本概念。

顺序搜索

// 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) )
在这里插入图片描述

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