C++数据结构算法(第一章)

本文介绍了数据结构和算法的基础知识,包括数据、数据元素、数据项的关系,逻辑结构和存储结构,以及抽象数据类型的概念。同时,阐述了算法的定义、特性,并通过欧几里得算法举例说明,最后探讨了算法分析中的时间复杂度和空间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                            1.1  1.2

                            一、. 程序设计的实质是数据表示和数据处理。

                                                                                                                1.3  数据结构的基本概念

                                1.3.1

                                 1.数据:信息的载体.。一指整数,实数等数值数据;二指文字,声音,图形和图像等非数值数据。

                                 2.数据元素:数据的基本单位。

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

                                 4.数据、数据元素、数据项之间的关系

                                               ①包含关系:数据由数据元素组成,数据元素由数据项组成。

                                               ②数据元素是讨论数据结构时涉及的最小数据单位,其中的数据项一般不予考虑。


例如:

                         1.数据结构 :指相互之间存在一定关系的数据元素的集合。

                          2 .逻辑结构:指数据元素之间逻辑关系的整体。

                                                  ⑴ 集合:数据元素之间就是 “属于同一个集合” ;

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

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

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

                     依次为:


                                                                                                                 

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

                             (2). 链接存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示 。

                                                                           

                                      (1)                                                 (2)                                       

      5.逻辑结构和存储结构之间的关系

               (1).数据的逻辑结构属于用户视图,是面向问题的,反映了数据内部的构成方式;数据的存储结构属于                                               具体实现的视图,是面向计算机的。

                (2).一种数据的逻辑结构可以用多种存储结构来存储,而采用不同的存储结构,其数据处理的效率往往                                             是不同的。 





                                                              

                                                                                                                               1.3.2   抽象数据类型

                       ADT 抽象数据类型名
                       Data
                                  数据元素之间逻辑关系的定义
                       Operation
                                 操作1
                                         前置条件:执行此操作前数据所必须的状态  
                                         输        入:执行此操作所需要的输入
                                         功        能:该操作将完成的功能
                                         输        出:执行该操作后产生的输出
                                         后置条件:执行该操作后数据的状态
                     操作2
                                        ……
                                              ……
                    操作n
                                          ……
                     endADT 


                                                                                                                                  1.4 算法及算法分析

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

                                               2. 算法的五大特性:

                                                                                 ⑴ 输入:一个算法有零个或多个输入。

                                                                                 ⑵ 输出:一个算法有一个或多个输出。

                                                                                 ⑶ 有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
                                                                                 ⑷ 确定性:算法中的每一条指令必须有确切的含义,对于相同的输入只能得到相同的输出。

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

                                                 3.例:欧几里德算法——辗转相除法求两个自然数 m 和 n 的最大公约数

                                                                    (1)自然语言:优点:容易理解                 缺点:冗长、二义性

                                                                                                       步骤1:将m除以n得到余数r;
                                                                                                       步骤2:若r等于0,则n为最大公约数,算法结束;否则执行步骤3;
                                                                                                       步骤3:将n的值放在m中,将r的值放在n中,重新执行步骤1;

                                                                     (2)流程图:优点:流程直观                      缺点:缺少严密性、灵活性

                                                                                  

                                         


                                                                (3)程序设计语言:优点:能由计算机执行                         缺点:抽象性差,对语言要求高

                                                                                                          




                                    (5)伪代码:介于自然语言和程序设计语言之间的方法,它采用某一程序设计语言的基本语                                                                                                                                        法,操作指令可以结合自然语言来设计。
                                               优点:表达能力强,抽象性强,容易理解

                                                                                                          1. r = m % n;
                                                                                                           2. 循环直到 r 等于0
                                                                                                                    2.1 m = n;
                                                                                                                        2.2 n = r;
                                                                                                                           2.3 r = m % n;
                                                                                                          3. 输出 n ;




                                                                                                              1.4.2算法分析:


                                                            1.   度量算法效率的方法:
                                                                                a.事后统计:将算法实现,测算其时间和空间开销。 
                                                                                                   缺点:⑴ 编写程序实现算法将花费较多的时间和精力;
                                                                                                                ⑵ 所得实验结果依赖于计算机的软硬件等环境因素。
                                                                                  b.事前分析:对算法所消耗资源的一种估算方法。

                                                              2.算法的时间复杂度:算法的执行时间=每条语句执行时间之和,大O表示。Ο(1)<(log2n)<(n)<(nlog2n)<(n2)<(n3)<…<(2n)<(n!) 

                                                              3.算法的空间复杂度:s(n)=O(f(n))

                                                              4.算法分析举例:

                                                                                              (1)例1-5   ++x;                                      时间复杂度O(1)

                                                                       ( 2)例1-6   for (i=1; i<=n; ++i)
                                                                                       ++x;                                时间复杂度O(n)

                                                                      ( 3)例1-7   for (i=1; i<=n; ++i) 
                                                                                         for (j=1; j<=n; ++j)
                                                                                               ++x;                               时间复杂度O(n^2)

                                                                       (  4)例1-8   for (i=1; i<=n; ++i)
                                                                                          for (j=1; j<=i-1; ++j) 
                                                                                                ++x;                                时间复杂度O(n^3)

                                                                 5.最好情况、最坏情况、平均情况

                                                     结论:如果问题规模相同,时间代价与输入数据有关,则需要分析最好情                                                                                                                                                                                         况、最坏情况、平均情况。

                                                   最好情况:出现概率较大时分析
                                                   最差情况:实时系统
                                                  平均情况:已知输入数据是如何分布的, 通常假设等概率分布.

                                      










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值