数据结构概述 第一章 绪论

                                         用计算机求解任何问题都离不开程序设计,程序设计的实质是数据表示数据要能被计算机处理,首先必须能够存储在计算机的内存中,这项任务称为数据表示,其核心是数据结构和数据处理一个实际问题的求解必须满足各项处理要求,这项任务称为数据处理,其核心是算法数据结构课程主要讨论数据表示和数据处理的基本方法。

1.1 数据结构在程序设计中的作用

(1)程序设计的一般过程:

 分析问题,抽象出具体的数据模型待处理的数据以及数据之间的关系,即数据结构),形成问题求解的基本思路。

数据表示数据处理(具体的操作步骤,将问题求解的基本思路形成算法)。

用程序语言编写程序(将算法的操作步骤转换为程序设计语言)。

附:数据结构+算法=程序;数据结构和算法是构成程序的两个最重要的部分。

1.2 本书讨论的主要内容

(1)计算机能够求解的问题

数值问题 (数值问题抽象出来的数据模型通常是数学方程);

非数值问题 (非数值问题抽象出的数据模型通常是线性表,,图等数据结构)。

(2)非数值问题的数据组织和处理

数据的逻辑结构:线性表,,图等数据结构,其核心是如何组织待处理的数据以及数据之间的关系。

数据的存储结构:如何将线性表,,图等数据结构存储到计算机的存储器中,其核心是如何有效的存储数据以及数据之间的逻辑关系。

算法:如何基于数据的某种存储结构实现插入,删除,查找等基本操作,其核心是如何有效的处理数据。

常用数据处理技术:包括查找技术,排序技术,索引技术等。

1.3 数据结构的基本概念

1.3.1  数据结构

(1)数据是信息的载体;数据分为数值型数据(整数和实数等)和非数值型数据。

(2)数据元素是数据的基本单位。

(3)数据项:构成数据元素的不可分割的最小单位。

(4)数据结构是指相互之间存在一定关系的数据元素的集合。

(5)数据的逻辑结构是指数据元素之间逻辑关系的整体。

(6)数据结构的类型:

集合:数据元素之间就是“属于一个集合”,除此之外,没有任何关系。

线性结构:数据元素之间存在着一对一的线性关系。

树结构:数据元素之间存在着一对多的层次关系。

图结构:数据元素之间存在着多对多的任意关系。

树结构和图结构也称为非线性结构。

(7)数据的逻辑结构常用逻辑关系图来描述,其描述方法是:将每一个数据元素看做一个结点,用圆圈表示,元素之间的逻辑关系用节点之间的直线表示,如果强调关系的方向性,则用带箭头的连线表示关系(第一个节点是第二个节点的前区,第二个节点是第一个节点的后继,第一个节点无前区,最后一个节点无后继)。

(8)数据的存储结构又称物理结构,是数据及其逻辑结构在计算机中的表示。(通常有两种存储结构:顺序存储结构和链接存储结构)。

(9)顺序存储结构的基本思想是:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。

(10)连接存储结构的基本思想是:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。

(11)数据的逻辑结构是从具体问题抽象出来的数据模型,是面向问题的,反映了数据元素之间的关联方式和邻接关系。

(12)数据的存储结构是面向计算机的,其基本目标是将数据及其逻辑关系存储到计算机的内存中。

1.3.2  抽象数据类型

(1)数据类型是一组值的集合以及定义于这个值集上的一组操作的总称。

(2)抽象:抽出问题的本质特征而忽略非本质的细节,是对具体事物的一个概括。

(3)抽象数据类型是一个数据结构以及定义在该结构上的一组操作的总称。

 

1.4  算法及算法分析

(1)算法是对特定问题求解步骤的一种描述,是指令的有限序列。

(2)算法必须满足的五个重要特性:

输入:一个算法有零个或多个输入,这些输入通常取自于某个特定的对象集合;输出:一个算法有一个或多个输出,通常输出与输入之间有着某种特定的关系;有穷性:一个算法必须总是(对任何合法的输入)在执行有穷步之后结束,且每一步都在有穷时间内完成;确定性:算法中的每一条指令都必须有确切的含义,不存在二义性。并且,在任何条件下,对于相同的输入只能得到相同的输出;可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。

(3)“好”算法的特性“:正确性,鲁棒性(也称健壮性),简单性,抽象分级,高效性。

(4)算法的描述方法

自然语言 流程图 程序设计语言 伪代码

1.4.2   算法分析

1 )度量算法效率的方法

事后统计:先将算法实现,然后输入适当的数据运行,测算其时间和空间开销;其 缺点如下:编写程序实现算法将花费较多的时间和精力;所得实验结果依赖于计算机的软硬件等环境因素,有时容易掩盖算法本身的优劣。

事前分析:渐进复杂度,它是对算法所消耗资源的一种估算方法。

(2)问题规模:是指输入量的多少,一般来说,它可以从问题描述中得到。

(3)基本语句:执行次数与整个算法的执行次数成正比的语句。它是对算法运行时间的贡献最大,是算法中最重要的操作。

 

附注:好算法是反复努力和重新修正的结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值