浅谈数据结构和算法

数据结构和算法是什么

数据结构:数据之间的结构关系
算法:对数据的操作
数据结构+算法=程序设计
好的数据结构+好的算法=好的程序设计

数据结构之拆解

数据结构之逻辑结构-->逻辑上组织关系:线性,树形,图形,集合
数据结构之物理结构-->物理上存储结构:顺序存储,链式存储
ps:物理上的存储指的是在内存的存储结构,磁盘的数据组织一般由文件结构来描述

算法之拆解

算法即解决问题的方法,有输入有输出,有动作(CRUD)。
好的算法总的来说即时间效率高和存储量低,时间效率就是指的时间复杂度,存储量就是指的空间复杂度。
 1. 时间复杂度,一般用大O表示法来描述:
 按数量级递增依次为: O(1) < O(logn) < (n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)
 2. 空间复杂度:大数据领域中的bitmap存储法 算是对空间复杂度的算法的一个拆解吧。

这里写图片描述

经典的数据结构-逻辑结构-线性

 1. 数组:在一个规整的内存中存储一些列数据
 2. 链表:在内存的任何地方都可以存储
 3. 散列:数组+链表
他们的RUD如下图

这里写图片描述

经典的数据结构-逻辑结构-树

  1. 二叉查找树(Binary Search Tree):image如下图,存在 不平衡导致退化成线性结构的问题
    BST
  2. 红黑树(Red Black Tree):基于BST,通过以下规则以达到平衡的目的。
    Hashmap在1.8之后采用的底层数据结构为红黑树

    1)每个结点要么是红的,要么是黑的。
    2)根结点是黑的。
    3)每个叶结点(叶结点即指树尾端NIL指针或NULL结点)是黑的。
    4)如果一个结点是红的,那么它的俩个儿子都是黑的。
    5)对于任一结点而言,其到叶结点树尾端NIL指针的每一条路径都包含相同数目的黑结点。
    这里写图片描述

  3. B树(Balance Tree):二叉查找树结构由于树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下,所以诞生了这种平衡的多叉树
    这里写图片描述

  4. B+树:B树的升级版,常用于mysql等数据库的索引的底层实现。

  5. 数组与平衡二叉树基于时间复杂度的对比
    图1

经典的算法

  1. 二分查找–>迭代
  2. 分治—–>递归
    ・・・
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值