数据结构--》从数据结构开始,打好算法基础

这篇具有很好参考价值的文章主要介绍了数据结构--》从数据结构开始,打好算法基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

数据结构的基本概念

数据结构的三要素

算法的基本概念


数据结构的基本概念

        在学习某个知识之前,我们是否都有问过自己我们到底在学习的目的是什么?学习数据结构也一样,我们学习数据结构主要是为了用程序把现实世界的问题信息化;用计算机高效地处理这些信息从而创造价值。ok,接下来就正式学习数据结构这门课程:

数据:数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符合的集合。数据是计算机程序加工的原料。

数据元素:数据的基本单位,通常作为一个整体进行考虑和处理。

数据项:一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位。

数据对象:具有相同性质的数据元素的集合,是数据的一个子集。

它们之间的关系如下图所示:

数据结构--》从数据结构开始,打好算法基础

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。 数据结构这门课着重关注的是数据元素之间的关系,和对这些数据元素的操作,而不关心具体的数据项内容。

数据结构的三要素

数据结构三要素主要分为逻辑结构、数据的运算、物理结构(存储结构),以及每个结构对应的知识,接下来来将对这三要素进行简单的介绍一下:

逻辑结构分为好几种情况,接下来将逐一讲解,以下是数据元素之间常见的逻辑关系:

集合结构:各个元素同属于一个集合,别无其它关系。

线性结构:数据元素之间是一对一的关系,除了第一个元素,所有元素都有唯一前驱;除了最后一个元素,所有元素都有唯一后继。

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

图状结构:数据元素之间是多对多关系。

数据的运算:针对于某种逻辑结构,结合实际需求,定义基本运算。

物理结构是为了用计算机表示数据元素的逻辑关系,以下是物理结构创建的存储方式:

顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。

链式存储:逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。

索引存储:在存储元素信息的同时,还建立附加的索引表。索引表中的每项称为索引项,索引项的一般形式是(关键字,地址)。

散列存储:根据元素的关键字直接计算出该元素的存储地址,又称哈希存储。

若采用顺序存储,则各个数据元素在物理上必须是连续的;若采用非顺序存储,则各个数据元素在物理上可以是离散的。数据的存储结构会影响存储空间分配的方便程度;对数据运算的速度。

算法的基本概念

算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。

数据结构--》从数据结构开始,打好算法基础

算法具有如下特性:

有穷性:算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。算法必须是有穷的,而程序可以是无穷的。

确定性:算法中的每条指令必须有确切的含义,对于相同的输入只能得出相同的输出。

可行性:算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。

输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。

输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。

一个好的算法应该具备如下特质:

正确性:算法应能够正确地解决求解问题。

可读性:算法应具有良好的可读性,以帮助人们理解。

健壮性:输入非法数据时,算法能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果。

高效性与低存储量需求:花的时间少(时间复杂度低)和不费内存(空间复杂度低)。

总结图片如下:

数据结构--》从数据结构开始,打好算法基础

关于时间复杂度和空间复杂度的讲解操作,我在之前的文件就已经讲解过了,不知道的朋友推荐看一下我之前的文章:时间复杂度和空间复杂度(我不信看完这篇文章你还不懂) ,当然也可以看一下下面整理的知识梳理文档:

数据结构--》从数据结构开始,打好算法基础

数据结构--》从数据结构开始,打好算法基础

这篇文章主要讲解了数据结构相关的基本概念,下篇文章将着重讲解数据结构的相关知识。文章来源地址https://www.toymoban.com/news/detail-493034.html

到了这里,关于数据结构--》从数据结构开始,打好算法基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构与算法基础

    1.1、数组 已知5行5列的二维数组a中的各元素占两个字节,求元素a[2][3]按行优先存储的存储地址? 按行存:a+(5*2+3) 2=a+26 按列存:a+(5 3+2)*2=a+34 1.2、稀疏矩阵 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为 稀疏矩阵 ;与之

    2024年02月04日
    浏览(28)
  • 【算法基础】数据结构

    826. 单链表 - AcWing题库 827. 双链表 - AcWing题库 828. 模拟栈 - AcWing题库 3302. 表达式求值 - AcWing题库 遍历输入的操作 如果是数字就存入num的堆栈 (同时注意123,2123这种长数字要一次性存入) 如果是(  直接存入op的堆栈 如果是  )就一直运算,直到遇到( 如果是操作符(如

    2024年02月12日
    浏览(32)
  • 【算法与数据结构】--算法基础--算法设计与分析

    一、贪心算法 贪心算法是一种解决优化问题的算法设计方法,其核心思想是在每一步选择当前状态下的最优解,从而希望最终达到全局最优解。下面将介绍贪心算法的原理、实现步骤,并提供C#和Java的实现示例。 1.1 原理: 贪心算法的原理基于局部最优选择,通过在每一步选

    2024年02月07日
    浏览(40)
  • 数据结构基础之排序算法

    在数据结构中,常见的排序算法有以下几种: 冒泡排序(Bubble Sort):通过比较相邻元素并交换它们的位置,每轮将最大(或最小)的元素冒泡到末尾,重复执行直到排序完成。 特点:简单易懂,但对于大型数据集效率较低。 时间复杂度: 最优情况:O(n)(当数组已经排序好

    2024年02月15日
    浏览(29)
  • 算法竞赛:初级算法(第一章:基础数据结构)

    动态链表 动态链表需要 临时分配链表节点 ,使用完毕后释放。 优点 :能及时释放空间,不使用多余内存 缺点 :需要管理空间,容易出错(竞赛一般不用动态链表) 静态链表 静态链表使用 预先分配的一段连续空间 存储链表,这种链表在逻辑上是成立的。 有两种做法:

    2024年01月19日
    浏览(34)
  • 《数据结构与算法》之十大基础排序算法

    冒泡排序是一种交换排序,它的思路就是在待排序的数据中,两两比较相邻元素的大小,看是否满足大小顺序的要求,如果满足则不动,如果不满足则让它们互换。 然后继续与下一个相邻元素的比较,一直到一次遍历完成。一次遍历的过程就被成为一次冒泡,一次冒泡的结束

    2024年02月05日
    浏览(85)
  • Android开发UI新技能,你get这个新技能了吗?(附源码详解),从零开始学数据结构和算法

    2. 文本输入框 val state = +state { “Text Field to input” } TextField( value = state.value, onValueChange = { state.value = it } ) 3. 按钮 Button(text = “咬我啊”, onClick = { Log.v(“test”, “被咬了”) }) 4.弹出框 MaterialTheme { Column { val openDialog = +state { false } Button(“Click me”, onClick = { openDialog.value = true

    2024年04月12日
    浏览(26)
  • 【算法基础】(二)数据结构 --- 单链表

    ✨个人主页:bit me ✨当前专栏:算法基础 🔥专栏简介:该专栏主要更新一些基础算法题,有参加蓝桥杯等算法题竞赛或者正在刷题的铁汁们可以关注一下,互相监督打卡学习 🌹 🌹 🌹 实现一个单链表,链表初始为空,支持三种操作: 向链表头插入一个数; 删除第 k 个插

    2023年04月17日
    浏览(63)
  • 【算法集训】基础数据结构:十、矩阵

    矩阵其实就是二维数组,这些题目在9日集训中已经做过,这里做的方法大致相同。

    2024年02月04日
    浏览(30)
  • C++基础-介绍·数据结构·排序·算法

    C++是一门风格严谨又不失自由的开发语言,提供了完整的内存管理、支持函数式编程和面向对象编程,支持模板、多继承、多实现、重载、重写等多态特性。 优势在于目前90%的操作系统、数据库、应用基础架构、硬件嵌入式等都是使用C/C++制作的,而C++是对C的标准扩展,掌握

    2024年02月03日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包