zoukankan      html  css  js  c++  java
  • 《数据结构》学习笔记 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))复杂度。
  • 相关阅读:
    文件合并
    排序
    canvas 的cliprect()实现画布剪切DEMO
    SurfaceViewDemo
    View实现事件监听DEMO(文本跟随触屏事件)
    android progressBar和seekBar的小DEMO
    Android DrawerLayoutDemo
    Fragment和FragmentActivity使用Demo
    SharedPreferences DEMO
    android中sharedPreferences的用法
  • 原文地址:https://www.cnblogs.com/sanlangHit/p/12002703.html
Copyright © 2011-2022 走看看