第一章:数据结构和算法

​​​​

1.什么是数据结构?

当我们遇到一个实际问题时,首先需要解决两件事:

(1)如何将数据存储在计算机中;
(2)用什么方法和策略解决问题。

前者是数据结构,后者是算法。只有数据结构没有算法,相当于只把数据存储在计算机中,而没有有效的方法去处理,就像一栋只有框架的烂尾楼;若只有算法没有数据结构,就像沙漠里面的海市蜃楼,只不过是空中楼阁罢了。

在我们开始学习数据结构和算法之前,我们先从总体上来了解一下什么是数据结构和算法。顾名思义,数据是一切输入计算机中信息的总和,结构是指数据之间的关系。数据结构就是将数据及其之间的关系有效的存储在计算机中并进行基本操作。而算法就是对特定问题求解步骤的一种描述,通俗的讲就是解决问题的方法和策略。在遇到实际问题时,要充分利用自己所学的数据结构,将数据及其之间的关系有效地存储在计算机中,然后选择合适的算法策略,并用程序高效地实现。这就是Niklaus Wirth教授所说的:

程序=数据结构+算法

呃呃呃,感觉好深奥......但是,我们学习编程,想成为编程大神,那么我们就一定要精通数据结构跟算法。我们先来举一个生活中的例子:如果给你一堆书你会怎么放?这还不简单,想怎么放就怎么放。如果书不多,我们一般是一本挨着一本的放着。那么要是书的规模很大呢?如学校图书馆里面的书如果是按上述一本一本的放,那么以后需要找书的时候是不是累死人了。如下图:

所以如何摆书我们需要首先考虑是书的规模。如果书很少,我们直接摆就行了,如果书很多,我们又该怎么办呢?同学们可以说说嘛?这就好比我们做题目的时候,如果数据不是很大,我们暴力枚举就可以了,如果数据太大的话,你可能就要寻找别的方法了。

学习数据结构,我们需要从几个概念入手。首先什么是数据?

数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合,包括文本、声音、图像等等。在我们的例子里面,所谓的数据就是图书馆中所有的书。

数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。在我们的例子里面,数据元素指的就是书。

数据项:一个数据元素可以由若干个数据项组成。在我们的例子里面,数据项其实就是书名、作者、出版社等等。

数据对象:是性质相同的数据元素的集合,是数据的子集。在我们的例子里面,其实就是某一类书,例如《信息学奥赛一本通》和《信息学奥赛课课通》就是同一类书籍。

了解了什么是数据之后,那结构又是什么呢?所谓的结构,简单的理解就是指关系。严格的说,结构是指各个组成部分互相搭配和排列的方式。在现实生活中,不同数据元素之间不是独立的,而是存在特定关系的,我们把这种关系称为结构。那数据结构是什么呢?

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。

为编写出一个“完美”的程序,必须认真分析待处理对象的特性及各处理对象之间存在的关系。这也就是研究数据结构的意义。根据不同的角度,我们把数据结构分为逻辑结构和物理结构。

逻辑结构:是指数据对象中数据元素之间的相互关系。包括集合结构、线性结构、树形结构、图形结构。

集合结构∶集合结构中的数据元素除了同属于一个集合外,它们之间没有其他关系。各个数据元素是"平等"的,它们的共同属性是"同属于一个集合"。数据结构中的集合关系就类似于数学中的集合。

线性结构:线性结构中的数据之间是**一对一**的关系。

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
数据结构算法是计算机科学的基础和核心领域之一,第ba章介绍了数据结构的相关内容。 本章主要包括以下几个方面的内容: 1. 线性结构:线性结构是指数据元素之间存在一对一的关系,包括线性表、栈和队列。线性表是最基本的数据结构之一,它分为顺序表和链表两种形式。顺序表使用数组实现,插入和删除操作相对低效。链表使用指针实现,插入和删除操作较为灵活。 2. 树结构:树结构是一种层次结构,由节点和边组成。常见的树结构有二叉树、二叉搜索树和平衡二叉树等。二叉树中每个节点最多有两个子节点,二叉搜索树中左子节点的值小于根节点,右子节点的值大于根节点,查找效率较高。平衡二叉树是一种保持左右子树高度差不大于1的二叉搜索树。 3. 图结构:图结构是由节点和边组成的非线性结构。图分为有向图和无向图。图的表示方法有邻接矩阵和邻接表两种。深度优先搜索和广度优先搜索是图的常用遍历方法,可用于寻找路径、连通分量等问题。 4. 排序算法:排序算法是对一组无序数据进行按照某个规则进行有序排列的算法。第ba章介绍了常见的排序算法,包括冒泡排序、插入排序、选择排序、归并排序、快速排序等。每种排序算法的时间复杂度和空间复杂度不同,选择合适的排序算法可以提高性能。 5. 查找算法:查找算法是在一组数据中搜索某个特定元素的算法。第ba章介绍了顺序查找、二分查找和哈希查找等常见的查找算法。二分查找是在有序数组中应用最广泛的查找算法,通过不断缩小查找范围来快速定位目标值。 通过学习这些内容,我们可以了解不同数据结构的特点和应用场景,以及常见的排序和查找算法。掌握好这些知识,对于解决实际问题和提高程序效率都有很大帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

WANGHAOXIN364

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

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

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

打赏作者

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

抵扣说明:

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

余额充值