• 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.

  • 相关阅读:
    Python:如何显示进度条
    Python:常用函数封装
    Javascript:常用函数封装
    Javascript:alert(1)可以这样写以绕过filter
    SQL注入备忘单
    Web渗透:PHP字符编码绕过漏洞总结
    SQLi Lab的视频教程和文字教程
    Python:使用基于事件驱动的SAX解析XML
    Python:渗透测试开源项目【源码值得精读】
    Python:SQLMap源码精读—start函数
  • 原文地址:https://www.cnblogs.com/eleni/p/11620040.html
Copyright © 2020-2023  润新知