analysis of algorithms

1.

2. binary search (sorted array)

给定查找对象,array,以及最大最小的范围;将查找对象与middle作比较,进而改变最大最小的范围,然后调用递归

时间复杂度的计算要考虑最坏的情况,本题中最坏的情况类比一条面包每天吃一半几天吃完的问题,时间复杂度为log以2为底n的对数

O(log2 n)可以直接写成O(log n),与底数无关(换底公式可以将它们换成统一的底)

3. array的缺点有两个,第一个是fixed size,所以一开始就要给所有元素预留出足够的memory;第二个是对一个element进行改变整个array都要跟着变

所以引入linked list, linked list中的element仍然为单独个体,由指针指向下一个,优点是不需要提前知道element的个数,且对整体的影响较小

4. pointer需要一个指向第一个,除了最后一个之外的每一个都需要一个pointer指向下一个,最后一个element标记为Null

C语言中一定要让程序知道什么时候程序结束,不然不标记NULL的话C语言就会对最后一个element随机赋值

5. 寻找一个element时,时间复杂度为O(|L|), 其中| |代表长度

6. 

  • f(n) belongs to O(g(n)) if f(n) is asymptotically less than or equal to g(n)
  • f(n) belongs to Ω(g(n)) if f(n) is asymptotically greater than or equal to g(n)
  • f(n) belongs to Θ(g(n)) if f(n) is asymptotically equal to g(n)

7. pointer向开头增加元素,令new=new_element, new_element通过pointer指向原来的L

删除第一个element时,return L.next直接返回除第一个element之外的元素,时间复杂度O(1):

删除一个特殊的element,时间复杂度为O(|L|):

 

 补充:有一种双向指标,在dequeue时有用,可以结尾加指针

8.

原文地址:https://www.cnblogs.com/eleni/p/11620040.html