• 《数据结构》学习笔记 1-2章


    第一章 绪论

    内容概要:

    图灵机及RAM模型;算法复杂度评估 (不是时间,而是计算操作的次数)。

    渐进分析:大O (最坏),大Θ;算法分析。

    封底估算及实例 (计算大概量级)

    • 1 day =10^5 s; 300 year = 10^10 s.

    两种算法:迭代,递归算法

    • 迭代vs递归:递归形式简介;但效率经常小于迭代。

    两种策略:减而治之,分而治之;结合实例,两种典型的分析的方法:递归跟踪和递推式。

    动态规划: 

    fibonacci example, two implementation:recursive (O(2^n)) and iteration (O(n)).

    LCS:待理解。

    第二章 向量

    向量即Vector, 与List一起,构成了最基础的顺序数据结构。

    ADT v.s. Data structure, Difference? 

    从数组到向量:向量是基于数组结构实现的。

    向量ADT接口

    向量支持的操作

    • 构造/析构,复制:
      •  

    • 扩容:size 满载时double;动态内存管理的效率考虑(递增式扩容 vs. 加倍式扩容)。
    • 寻秩访问:get(), put(), or 重载[ ]通过数组实现;
    • 单个插入:带插入位置整体后移;区间插入:带插入位置后整体位移一定长度。
    • 查找操作:对于有序向量,需支持判等操作;对于无序向量,需支持比较操作。=> 输入敏感算法。
    • 单元素/区间删除:单元素删除是在调用区间删除,而不是反过来;效率考虑。
    • 唯一化:用到查找和删除;复杂度:O(n^2)。
    • 遍历:通过函数指针或者函数对象实现。
      •   

    有序向量(很多操作将大大简化):

    • 唯一化,低效版 vs 高效版。
    • 二分查找:复杂度1.5logn;
    •  (该版本本质上在找大于e的第一个元素)

    Fibonacci查找(与二分查找区别:如何切割/取划分的中点),复杂度:1.44 logn.

    •   

    起泡排序算法的两种版本:

    •  
    • 算法复杂度:最好为O(n), 最坏为O(n^2).

     归并排序

    • 分治策略的典型应用;先分,再Merge。O(nlog(n))复杂度。
  • 相关阅读:
    git命令记录
    JS实现iframe自适应高度
    js生成某个范围内的随机数
    jquery实现按钮翻转动画
    删除ELK的索引
    ELK故障处理,不知道成功否
    软件开发的SOLID原则
    阿里云的远程桌面问题
    Zabbix增加邮箱后Server宕处理
    201811招投标培训要点
  • 原文地址:https://www.cnblogs.com/sanlangHit/p/12002703.html
Copyright © 2020-2023  润新知