什么是数据结构?什么是算法

记得是大一大二的时候学习了数据结构。时间过的好快,现在实现了,现在感觉自己的基础好差很多都不会。欠的帐还是要还的!

什么是数据结构?什么是算法?

呃呃呃呃 哎….不会。

多次参加了MOOC姥姥的数据结构,都没有坚持下来,希望这次可以坚持下来。

引用姥姥的例子:如果给你一堆书你会怎么放?

想怎么放就怎么放,哈哈。

如果书不多,我们一般是一本插着一本的放着。如下图

要是书的规模很大呢?如学校图书馆里面的书如果是按上述一本一本的插入,那么以后需要找书的时候是不是累死人了。如下图

所以答案是看书的规模。


什么是数据结构?

数据是什么?结构是什么?

参考大话数据结构,几个术语的定义

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

其实就是图书馆中所有的书。

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

就是书。

数据项:一个数据元素可以由若干个数据项组成。

其实就是书名、作者、出版社啥的….

class Book {
//书名
private String bookName;
//作者
private String bookAuthor;
//出版社
private String bookPress;
}

其实一个Book对象就是数据元素,bookName、bookAuthor、bookPress就是数据项。

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

其实就是某一类书。如图下图都是数据结构一类的书

是不是明白了什么是数据?哈哈 还是需要结合例子理解的深入啊。

什么是结构?

逻辑结构、物理结构。

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

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

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

树形结构:树形结构中的数据之间存在一种一对多的层次关系。

图形结构:图形结构的数据元素是多对多的关系。


物理结构:是指数据的逻辑结构在计算机中的存储形式。顺序存储和链式存储。

顺序存储:是把数据元素存放在地址连续的存储单元里。

链式存储:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。


什么是数据结构?

Sartaj Sahni在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存在于该对象的实例合组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。”他将数据对象(data object)定义为“一个数据对象是实例或值的集合”。

Clifford A.Shaffer在《数据结构与算法分析》一书中的定义是:“数据结构是 ADT(抽象数据类型Abstract Data Type) 的物理实现。”

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

姥姥:数据结构包括数据对象集以及它们在计算机中的组织方式,即它们的逻辑结构和物理存储结构,同时还包括与数据对象集相关的操作集,以及实现这些操作的最高效的算法。

个人:就是把图书馆中的书转化为一些字符数据存入电脑中,以及对这些数据对象集的操作。如找书,摆放放书等。


什么是算法?

还是图书馆的例子,如果一本一本找累死人,要是有个索引,先找哪一类这样会快很多。如何查找其实就是算法。

算法是解决问题步骤的有限集合,通常用某一种计算机语言进行伪码描述。通常用时间复杂度和空间复杂度来衡量算法的优劣。

算法的五大特征:输入、输出、有穷性、确定性、可行性。

输入:零个或多个输入。

输出:一个或多个输出。

有穷性:有限步骤后在可接受时间内完成。

确定性:每个步骤都有确定含义,无二义性。

可行性:每一步都是可行的。

算法设计要求:正确性、可读性、健壮性、时间效率高和存储低。

正确性:有输入输出,无二义性,有正确答案。

可读性:方便阅读。

健壮性:输入不合法能处理

时间效率高和存储低:时间空间复杂度越低越好。


这就是数据结构和算法。

猜你喜欢

转载自blog.csdn.net/u013164931/article/details/80189351