王道408数据结构——第一章 绪论

文章目录

  • 一、概念
    • 数据结构研究内容
  • 二、数据三要素
    • 逻辑结构
    • 储存结构(物理结构)
    • 运算
  • 三、算法和算法评价
    • 时间复杂度
    • 空间复杂度
  • 四、数字相关汇总
    • 算法性能
    • 二叉树相关
    • 图相关
    • 矩阵相关

一、概念

数据结构研究内容

数据结构是一门研究在非数值计算中,计算机的操作对象、对象间关系以及施加于对象的操作的学科。

  • 数据元素
    数据的基本单位,可由若干数据项构成。
  • 数据项(属性)
    构成数据元素的不可分割的最小单位。
  • 数据对象
    具有相同性质的数据元素的集合,是数据的一个子集。
  • 数据类型
    值的集合以及对应操作。
    • 原子类型:不可再分
    • 结构类型:可以分解为若干分量
    • 抽象数据类型:抽象数据组织及与之相关的操作。
  • 数据结构
    互相之间存在一种或多种特定关系的数据元素的集合。
    • 结构:数据元素之间的关系称为结构,分为逻辑结构储存结构运算
    • 算法的设计取决于逻辑结构,算法的实现取决于存储结构。
  • 算法:算法是对待定问题求解步骤的一种描述,它是指令的有限序列,其中每条指令表示一个或多个操作。此外,算法还具有有穷性、确定性、可行性、输入和输出五个基本特点。

二、数据三要素

逻辑结构

指数据元素之间的逻辑关系,独立于计算机,与数据元素本身的形式、内容、相对位置、个数无关。分为线性结构和非线性结构。

数据的逻辑结构
线性结构非线性结构
一般线性表受限线性表线性表推广集合树形结构图状结构
栈和队列数组一般树二叉树有向图无向图
  • 集合:结构中的元素除"同属一个集合外"再无其他关系.
  • 线性结构:集合中的元素只存在一对一的关系.
  • 树形结构:集合中的元素存在一对多的关系.
  • 图(网)状结构:集合中的元素存在多对多的关系.

储存结构(物理结构)

指数据结构在计算机中的表示(映像),依赖于计算机语言,分为顺序存储链式存储索引存储散列存储

  • 顺序存储:
    把逻辑上相邻的元素储存在物理位置也相邻的储存单元中。优点是可以随机存取、每个元素可以占用最少的空间;缺点是可能产生较多的外部碎片。
  • 链式存储
    借助指示元素存储地址的指针来表示元素的逻辑关系。优点是不会产生碎片,充分利用储存单元;缺点是指针会占用额外空间、且只能顺序存取
  • 索引存储
    建立附加的索引表,表中每项称为索引项。优点是检索速度快;缺点是索引表占用额外空间、增删数据也要修改索引表,花费较多时间。
  • 散列储存(哈希存储)
    根据元素的关键字直接计算出该元素的储存地址。优点是检索、增删元素快;缺点是若散列函数不好,会出现散列冲突

文件的物理记录和逻辑记录间可以存在三种关系

  • 一个物理记录存放一个逻辑记录
  • 一个物理记录存放多个逻辑记录
  • 多个物理记录存放一个逻辑记录

运算

施加在数据上的运算包括运算的定义和实现。
运算的定义针对逻辑结构,指出运算的功能;运算的实现针对物理结构,针对运算的具体操作步骤。

三、算法和算法评价

算法是对特定问题求解步骤的一种描述,是指令的有限序列。具有以下个重要特性:

  1. 有穷性
  2. 确定性
  3. 可行性
  4. 输入
  5. 输出

好的算法还要考虑一下目标:

  1. 正确性
  2. 可读性
  3. 健壮性
  4. 时空效率

时间复杂度

语句的频度是指起在算法中被执行的次数,算法中所有语句的频度之和记为T(n),它是算法问题规模n的函数。时间复杂度用于衡量T(n)的数量级。
也指在最坏情况下,估算算法执行时间的一个上界。

算法的时间复杂度不仅依赖于问题的规模,也依赖于待输入数据的性质。一般总是考虑算法在最坏情况下的复杂度。

空间复杂度

该算法耗费的储存空间,是问题规模n的函数S(n)。
算法原地工作是指算法所需的辅助空间为常量。

四、数字相关汇总

算法性能

算法最好情况最坏情况平均情况占用空间稳定性
顺序表的插入O(1)O(1)O(1)O(n)O(n)O(n)1n\frac{1}{n}n1/O(n)O(n)O(n)

顺序表的删除

二叉树相关

图相关

矩阵相关

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C和指针之Eratosthenes-埃拉托斯特尼筛方法找质数

1、问题 *Eratosthenes-埃拉托斯特尼筛方法找质数,给出要筛数值的范围n,先用2去筛,2的倍数不是质数, * 再用下一个素数,也就是3筛,把3留下,把3的倍数不是质数,接下去用下一个素数5筛,把5留下,把5的倍数不是质数, *c不断重复下去...... 2、代码实现 #include…

转:iOS-CoreLocation:无论你在哪里,我都要找到你!

1.定位 使用步骤: 创建CLLocationManager示例,并且需要强引用它 设置CLLocationManager的代理,监听并获取所更新的位置 启动位置更新 123_manager [[CLLocationManager alloc] init];_manager.delegate self;[_manager startUpdatingLocati…

正确对待生活

三文鱼,国人称为马哈鱼。是一类洄游性鱼类,为常被食用的鱼类之一。主要生活在大西洋及太平洋,在美洲大湖及其他湖可以找到。三文鱼在淡水环境下出生,之后移到海水生长,又会洄游到淡水繁殖。三文鱼会利用太阳和地球磁场…

WPF 实现验证码控件

WPF开发者QQ群此群已满340500857 &#xff0c;请加新群458041663由于微信群人数太多入群请添加小编微信号yanjinhuawechat 或 W_Feng_aiQ 邀请入群需备注WPF开发者 01—代码如下一、创建CheckCode.xaml代码如下。<ResourceDictionary xmlns"http://schemas.microsoft.c…

curl   liinux下http命令执行工具

安装cURLwget http://curl.haxx.se/download/curl-7.17.1.tar.gztar -zxf curl-7.17.1.tar.gz./configure --prefix/usr/local/curlmake & make installCurl是Linux下一个很强大的http命令行工具&#xff0c;其功能十分强大。1) 二话不说&#xff0c;先从这里开始吧&#x…

王道408数据结构——第二章 线性表

文章目录一、线性表的定义和基本操作线性表顺序表1.插入操作2.删除操作3.按值查找&#xff08;顺序查找&#xff09;二、单链表1. 头插法2. 尾插法3. 按序号查找4. 按值查找5. 插入结点6. 删除结点7. 求表长三、 双链表1. 插入2. 删除四、循环链表五、静态链表六、顺序表和链表…

C和指针之用拉托斯特尼筛方法(Eratosthenes)查找区间质素个数

1、问题 用拉托斯特尼筛方法(Eratosthenes)查找区间质素个数 2、代码实现 #include <stdio.h> #define LEN 10000 /***Eratosthenes-埃拉托斯特尼筛方法找质数,给出要筛数值的范围n,先用2去筛,2的倍数不是质数,* 再用下一个素数,也就是3筛,把3留下,把3的倍数不是…

Mysql数据库性能优化

2019独角兽企业重金招聘Python工程师标准>>> Mysql数据库性能优化&#xff0c;可以从下面三点入手&#xff1a; 数据库设计 SQL语句优化 架构优化 一.数据库设计优化 1.适度的违反范式&#xff0c;适度 遵循三大范式就会带来查询时经常需要join&#xff0c;导致…

BZOJ 2588: Spoj 10628. Count on a tree 树上跑主席树

2588: Spoj 10628. Count on a tree Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id2588Description 给定一棵N个节点的树&#xff0c;每个点有一个权值&#xff0c;对于M个询问(u,v,k)&#xff0c;你需要回答u xor las…

session多服务器共享的方案梳理

因方便自己学习以此记录本文转自&#xff1a;http://www.cnblogs.com/wangtao_20/p/3395518.html#2846008session的存储了解以前是怎么做的&#xff0c;搞清楚了来龙去脉&#xff0c;才会明白进行共享背后的思想和出发点。我喜欢按照这样的方式来问(或者去搞清楚)&#xff1a;为…

4. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识wrk、wrk2

1. 前言上一篇文章我们了解了bombardier&#xff0c;并知道了bombardier.yml与开源项目bombardier的关系&#xff0c;接下来的文章我们了解一下wrk、wrk2&#xff0c;并对比一下它们与bombardier的关系2. 认识wrkwrk是一种现代 HTTP 基准测试工具&#xff0c;能够在单个多核 CP…

王道408数据结构——第三章 栈和队列

一、栈 栈&#xff08;Stack&#xff09;是只允许在一端进行插入或删除操作的线性表。 栈顶&#xff1a;线性表允许插入删除的那一端 栈底&#xff1a;固定的、不允许进行插入删除的另一端 栈的操作特性可以概括为后进先出&#xff08;LIFO&#xff09; n个不同的元素进栈&…

C和指针之const、#define、volatile

1、const 定义const 只读变量,具有不可变形 const int a = 100; 编译器通常不为普通Const只读变量分配存储空间, 而是将它们保存在符号表中, 这使得它成为一个编译期间的值,没有了存储与读内存操作,使用效率很高 #define M3 //宏常量const int N = 5; //此时并没有将…

dispatchTouchEvent onInterceptTouchEvent onTouchEvent区分

1. dispatchTouchEvent 是处理触摸事件分发,执行super.dispatchTouchEvent(ev)&#xff0c;事件向下分发。 2. onInterceptTouchEvent是ViewGroup提供的方法&#xff0c;默认返回false&#xff0c;返回true表示拦截。 3. onTouchEvent是View中提供的方法&#xff0c;ViewGroup也…

Avalonia跨平台入门第二十篇之语音播放问题

在前面分享的几篇中咱已经玩耍了Popup、ListBox多选、Grid动态分、RadioButton模板、控件的拖放效果、控件的置顶和置底、控件的锁定、自定义Window样式、动画效果、Expander控件、ListBox折叠列表、聊天窗口、ListBox图片消息、窗口抖动、语音发送、语音播放;今晚加个班来解决…

递归算法浅谈

递归算法 程序调用自身的编程技巧称为递归&#xff08; recursion&#xff09;。   一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法&#xff0c;它通常把一个大型复杂的问题层层转化为一个与原问题类似的规模较小的问题来求解&#xff0c;递归策略仅仅需少量…

C和指针之实现strlen函数

1、问题 求字符串长度,实现strlen函数。 2、代码实现 #include <stdio.h> #include <assert.h>int get_strlen(char *str) {assert(NULL != str);return *str == \0 ? 0 : (1 + get_strlen(++str)); }int main() {char *str = "chenyu";char…

王道408数据结构——第四章 串(KMP算法)

一、串的定义和实现 字符串简称串&#xff0c;是由零个或多个字符组成的有限序列&#xff0c;一般记为S′a1a2⋅⋅⋅an′Sa_1a_2a_nS′a1​a2​⋅⋅⋅an′​&#xff0c;n称为串的长度。 串中任意多个连续字符组成的子序列称为该串的子串&#xff0c;相应的该串称为主串。某个…

ThoughtWorks技术雷达专区

作为一家服务于全球不同类型的IT专业服务公司&#xff0c;ThoughtWorks从未停止过对卓越技术的追求&#xff0c;为此&#xff0c;ThoughtWorks的全球技术委员会(TAB)会定期讨论技术战略&#xff0c;并将其绘制成一份能够体现技术趋势的雷达图&#xff0c;它相当于当下技术领域的…

腾讯视频VIP周卡深圳地区免费领!附非深圳免费领腾讯视频会员攻略

深圳今天开始&#xff0c;暂停了所有公共交通&#xff0c;小区开始封闭管理&#xff0c;大家都居家办公&#xff0c;腾讯官方今天给深圳地区用户免费发放7天腾讯视频VIP会员&#xff0c;居家期间&#xff0c;可以追剧了&#xff01;这是腾讯官方给深圳地区的抗疫福利&#xff0…