zoukankan      html  css  js  c++  java
  • 《数据结构与算法分析》浅读1

    大学时学数据结构与算法,很难懂得到底有什么用处。从业五年后,愈发知道做任何基础的事情须有把握全局、深入细节的能力。

    于是重读数据结构与算法,鉴于该书的难度,所以读一部分就先作笔记。以下为粗浅的笔记:

    一、数据结构

    1、线性结构

    A、 栈:先进后出

    B、 队列:先进先出

    C、 线性表:

    D、 链表:单向链表、双向链表、环形链表。例如:LinedList

    E、  静态链表:ArrayList是动态扩容的静态链表,每次扩容复制一份,这也决定了它是线程不安全的,因为它是有状态的——即其成员变量size为静态链表长度。

    F、  串

    2、集合

    3、树形结构:二叉树、平衡树(B树、红黑树)、堆

    4、图

    二、时间复杂度:

    二分查找法的时间复杂度为O(LogN),计算原理很简单,每次除以2查找,M次之后得到一个数,所以2的M次方为N,那么M= LogN。

    三、树:

    B树和B+树:是AVL树的一个变种种,为文件存储系统而服务,因为磁块的读取比CPU的计算更慢,所以以更多计算来减少读取磁块的次数。数据都存在叶子节点上,节点上存储L条数据。节点下子节点数量为M。通过数据量、单条字节数和数据量大致可以计算出树的高度H。查找数据的时间复杂度为O(H),不大于O(logm n)。

    B+树在B树的基础上增加了叶子节点的链表指针,所以可以更快的支持区间查询。【这是大于小于查询可以命中索引的原理】

    红黑树:是AVL树的一个变种。牺牲了完全平衡来增加插入效率(减少旋转)。

    【遗留课题:完全把红黑树读懂,并以java代码的方式实现】

  • 相关阅读:
    常用不等式例题整理
    洛谷P1233 木棍加工题解 LIS
    莫比乌斯反演
    CSS样式使用
    相邻元素的层级(仿淘宝页面效果)
    js基础知识梳理(最简版)
    css2基础知识梳理
    html4基础知识梳理
    mysql密码遗忘和登陆报错问题
    mysql修改密码过期时间以及密码复杂性问题
  • 原文地址:https://www.cnblogs.com/baimingqian/p/10810141.html
Copyright © 2011-2022 走看看