数据结构总结

6 篇文章 0 订阅
2 篇文章 0 订阅

虽然了解了一些数据结构的点,但是我感觉没什么卵用,暂时用不到,相信以后会有很大作用。

1.首先,提纲挈领,数据是计算机中的操作对象包括常用的int、string或者声音、图片、视屏。

数据元素组成数据对象,比方说 : 人类这个数据对象中,人是数据元素;数据项组成数据元素,比方说人的眼、

鼻、耳、嘴、手就是数据项

数据结构构成


2.数据元素之间的关系叫逻辑结构,而这种逻辑结构存储在计算机中存储形式叫做物理结构

逻辑结构


物理结构图片

      集合结构:数据元素之间没有关系,只是存储在同一集合。

集合图片

      线性结构:数据元素之间一个关联指向一个

线性图片

      树形结构:数据元素之间一对多关系

    树形图片

       图形结构:数据元素之间多对多的关系

图形数据结构图片

顺序存储结构:数据元素依次存放在地址连续的计算机存储器中,需要提前开辟固定空间。

存储或者读取数据时,时间复杂度都是O(1);插入或删除时,时间复杂度O(n)。

链式存储结构:数据元素随意存放在地址连续的计算机存储器中,但是存储中的每个单元都有一个指针指向

下一个元素,相当于线性结构。数据可以动态变化。存储或者读取数据时,时间复杂度都是O(n);插入或删除时,

时间复杂度O(1)。


  3.算法的时间复杂度耗费时间从小到大:

O(1) < O(log n) < O(n) < O(n log n) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)

  4.栈(LIFO)后进先出,只能在栈顶(允许插入或者删除的一端)操作,属于线性结构的一种。

  队列(FIFO)先进先出,一端进行插入,另一端进行删除,属于线性结构的一种。

不管是链栈或队列还是顺序栈或队列,时间复杂度都是O(1)。根据物理机构的特性和使用中元素变化考虑,若元素变化多用链,若元素变化少在可控范围内用顺序。

   5. 串 (string) 是多个字符组成的有限序列,又称字符串。本质上属于线性结构的扩展。常用KMP算法匹配对比字符串。

   6.树(一对多):常见的有二叉树

遍历方式:前序遍历、中序遍历、后序遍历。

哈夫曼编码:通过对二叉树的带权和节点进行构造上的改变。对数据进行压缩原理。

    7.图(多对多):存储结构多样化,如邻接矩阵、十字链表、邻接多重表

遍历方式:深度优先遍历、广度优先遍历

最小生成树:普利姆算法(走一步算一步)、克里斯卡尔算法(全局从最短权值边入手)。

最短路路径:迪杰斯特拉算法、弗洛伊德算法(这两个没搞懂)

拓扑排序:因为一些资源或者时间限制条件,必须完成一个节点才能继续下一个节点。

    8.查找:

顺序表查找算法:点击进入

有序表查找:折半查找、插值查找斐波那契查找,详情请点击进入

线性查找索引:稠密索引、分块索引、倒排索引;

二叉排序树:时间复杂度O(log n)

散列表查找(哈希表):存储位置 = 函数(关键字)。查找时间复杂度O(1);

散列表处理冲突有,开放地址(地址自由推移)、再散列函数法(创建多个散列函数)、链地址法

(一个位置链式存储多个)、公共溢出区法(溢出的单独放一个表)。

      9.排序:内排序(内存中处理数据)和外排序(内存与磁盘中交互处理数据)

内排序:插入排序、交换排序、选择排序和归并排序。详情请点击进入

排序结构

排序结构

 从空间上来看,如果内存使用限制比较严格的话,使用堆排序。

从稳定性上来开,归并排序最好。

如果我们比较的n排序数越小,反而适用冒泡、简单选择、直接插入最好。

经过优化的快速排序是性能最好的排序算法。

但是根据实际情况我们应该考虑不用的算法以达到我们系统软件的运行更迅速和稳定。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值