【java笔记】大话数据结构 第一章,第二章

目录

 

知识图解:

1.基本概念和术语:

1.2 逻辑结构和物理结构

2 算法

2.1算法时间复杂度

2.2 推导大O阶的方法


知识图解:

【java笔记】大话数据结构 第一章,第二章_第1张图片

 

1.基本概念和术语:

     数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。

              比如现在我们常用的搜索引擎,一般会有网页,MP3,图片,视频。MP3 就是声音数据,图片就是图像数据

    数据元素:是组成数据的,有一定意义的基本单位,在计算中通常作为整体处理,也被称为记录。比如牛,马,羊,猪,等动                         物, 当然就是禽类的数据元素。

   

   数据项:一个数据元素可以由若干个数据项组成。比如人这样的数据元素,可以有眼,耳, 鼻,嘴,手,脚这些数据项组成,                   数据项是数据不可分割的最小单元。

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

 

 

   数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合用计算机存储、组织数据的方式。

 

 

 

1.2 逻辑结构和物理结构

 

    逻辑结构:是指数据对象中数据元素之间的相互关系;逻辑结构分为四种: 集合结构,线性结构,树形结构,图形结构               

                 ①集合结构: 集合结构中的数据元素除了同属于一个集合外,他们之间没有其他关系了,个数据元素是平等的。

                   【java笔记】大话数据结构 第一章,第二章_第2张图片

                 ② 线性结构:线性结构中的数据元素之间是一对一的关系; 

                   【java笔记】大话数据结构 第一章,第二章_第3张图片

                 ③ 树形结构: 树形结构中的元素纯在着一对多的关系

                    【java笔记】大话数据结构 第一章,第二章_第4张图片

 

                 ④ 图型结构: 图形结构中的元素存在着多对多的关系

                【java笔记】大话数据结构 第一章,第二章_第5张图片

 

    物理结构: 顺序存储, 链式存储

             物理结构的定义: 是数据的逻辑结构在计算机中的存储形式

            ① 顺序存储:  是把数据元素存储到 地址连续的存储单元中,其中数据的逻辑关系和物理关系是一致的

                【java笔记】大话数据结构 第一章,第二章_第6张图片


            ② 链式存储结构, 是将数据元素存储到任意的存储单元中,这组存储单元 可以是连续的也可以是非连续的,数据元素之                   间的 逻辑关系并不能反映存储关系

                 因此需要一个指针存放数据元素的地址,这样通过这个地址找到相应的元素 ,这种方式类似于银行取号等候这个过                       程;

               【java笔记】大话数据结构 第一章,第二章_第7张图片

 

2 算法

 

  算法是解决特定问题求解步骤的描述, 在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作


  算法特性

   ① 输入输出;  算法 至少有零个或多个输入, 算法至少有零个或多个 输出

   ② 有穷性: 算法执行有限的步骤后,自动结束不会无限循环, 并且每一个步骤在可接受的时间范围内完成

   ③ 确定性 :算法的每一步骤都有明确的意义 ,不会出现二义性 ,相同的输入,只能有唯一的输出

   ④ 可行性: 算法的每一步都必须是可行的, 也就是说通过执行有限的次数会结束;

 

  算法的设计要求:

   ① 正确性:算法至少应该具有输入输出和加工处理无歧义性,能够得到问题的正确答案。

   ② 可读性:算法设计的目的是为了便于阅读,理解和交流。

   ③ 健壮性 :当输入不合法数据,算法也能做出相应的处理。

   ④时间效率高和存储量低: 设计上运算效率高,存储低要求

 

2.1算法时间复杂度

 

算法时间复杂度定义:在进行算法分析时,语句总执行次数T(n) 是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间度量,记作;T(n) =O (f(n)) 它表示随着问题规模n的增大,算法执行时间的增长率和f(n)增长率相同,称做算法的渐近时间复杂度,称为时间复杂度,其中f(n)是问题规模n的某个函数

这样用大写O() 来体现算法时间复杂度的记法称为大O记法,一般情况下随着n增大T(n)增长最慢的算法为最优算法。

2.2 推导大O阶的方法

①用常数1取代运行时间中的所有加法常数

②在修改后的运行次数函数中,只保留最高阶项

③如果最高阶项存在且不是1 ,则去除与这个项相乘的常数,得到的结果就是大O阶。

 

【java笔记】大话数据结构 第一章,第二章_第8张图片

 

 

 

 

 

     

     

 

 

 

你可能感兴趣的:(数据结构)