数据结构和算法概述

1.什么是数据结构,什么是算法

    数据结构指一组数据的存储结构。算法就是操作数据的一组方法。

 

2.常用的数据结构

    数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树。

 

3.常用的算法

    递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法

 

4.数据结构的分类

4.1 数据的逻辑结构

    数据与数据之间的联系被称为数据的逻辑结构 ,根据关系的紧密程度,逻辑结构被分为四种

4.1.1 集合

    数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系。打个比方,我有一个篮子,篮子里面放了一个苹果,一个香蕉,一个梨子。这三种水果除了放在一个篮子里面,他们没有其它联系。这篮子里三种水果就属于一个集合,他们老死不相往来。

4.1.2 线性结构

    数据结构中的元素存在一对一的相互关系;打个比方,我要高考了,但是我数学不好,所以我请了一个数学老师给我单独补课,并且规定在我补课期间,该数学老师不能跟其他人补课,那么我和这个数学老师就是一对一的关系,我们之间的关系就是他跟我补课。还比如排队,每列只站一个人,每列总共十个人,那么他们每个人之间有先后关系,但是都是一对一的先后关系。

4.1.3 树形结构

    数据结构中的元素存在一对多的相互关系;比如,一个数学老师给两个或者多个学生补课,那么老师和学生之间就是一对多的关系。

4.1.4 图形结构

    数据结构中的元素存在多对多的相互关系。比如我们的交通网,长沙有n条高速公路到达上海,同时上海也有k条高速公路到达长沙,长沙到上海是一对三n的关系,上海到长沙也是一对k的关系,所以长沙和上海是多对多的关系。

 

4.2 数据的物理结构

    数据的逻辑结构在计算机存储空间的存放形式被称为数据的物理结构。

4.2.1 顺序存储结构

    把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构。

    特点:

    1、随机存取表中元素。

    2、插入和删除操作需要移动元素。

4.2.2 链接存储结构

    在计算机中用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。它不要求逻辑上相邻的元素在物理位置上也相邻.因此它没有顺序存储结构所具有的弱点,但也同时失去了顺序表可随机存取的优点。

    特点:

    1、比顺序存储结构的存储密度小 (每个节点都由数据域和指针域组成,所以相同空间内假设全存满的话顺序比链式存储更多)。

    2、逻辑上相邻的节点物理上不必相邻。

    3、插入、删除灵活 (不必移动节点,只要改变节点中的指针)。

    4、查找结点时链式存储要比顺序存储慢。

    5、每个结点是由数据域和指针域组成。

4.2.3 数据索引存储结构

    除建立存储结点信息外,还建立附加的索引表来标识结点的地址。索引表由若干索引项组成,如果每个节点在索引表中都有一个索引项,则该索引表就被称为稠密索引。若一组节点在索引表中只对应于一个索引项,则该索引表就成为稀疏索引。索引项的一般形式一般是关键字、地址。在搜索引擎中,需要按某些关键字的值来查找记录,为此可以按关键字建立索引,这种索引就叫做倒排索引(因为是根据关键词来找链接地址,而不是通过某个链接搜索关键词,这里反过来了,所以称为倒排索引),带有倒排索引的文件就叫做倒排索引文件,又称为倒排文件。倒排文件可以实现快速检索,这种索引存储方法是目前搜索引擎最常用的存储方法。

    特点:

    索引存储结构是用结点的索引号来确定结点存储地址,其优点是检索速度快,缺点是增加了附加的索引表,会占用较多的存储空间。

4.2.4 数据散列存储结构

    散列存储,又称hash存储,是一种力图将数据元素的存储位置与关键字之间建立确定对应关系的查找技术。比如将汤高这个名字通过一个函数转换成为一个值,这个值就是姓名汤高在计算机中的存储地址,这个函数称为hash函数。hash函数有很多种,今天先不谈。以后再细讲。散列法存储的基本思想是:它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表

    特点:

    散列是数组存储方式的一种发展,相比数组,散列的数据访问速度要高于数组。要依据数据的某一部分来查找数据时数组一般要从头遍历数组才能确定想要查找的数据位置,而散列是通过函数通过“想要查找的数据”作为“输入”、“数据的位置”作为“输出”来实现快速访问,因此时间复杂度可以认为为O(1),而数组遍历的时间复杂度为O(n)。

    逻辑结构是面向问题的,而物理结构就是面向计算机的,其基本的目标就是将数据及其逻辑关系存储到计算机的内存中。

 

5.数据结构与算法简单图解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员学习圈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值