数据结构1-1:什么是数据结构

数据结构定义
数据结构是没有统一定义的。

看不懂没关系,刚开始学,等到学完再回过来头看就好啦。

数据结构和算法是经常挨在一起的东西。

例1:如何在书架上摆放图书

这个问题问的很不科学,因为没有说给的书架是什么样子的,书架可以是:

所以,当我问你一个数据怎么组织的时候,就是跟这个数据的规模有关系的。不一样的规模的问题,它处理起来的难度就是不一样的。

方法2插入一本新书:《阿Q正传》,那就要在a开头的找到位置,后面的书往后移,如果书很多,这还是很难。

这个例子想说明的是:
解决问题方法的效率,跟数据的组织方式有关




例2:写程序实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数

将上面的两种实现方式,写出来跑一跑,看一下:

我们发现,循环实现需要等待一会就会执行完成,而递归实现直接就不走,因为递归对计算机来说占用的内存空间是很大的,这就告诉我们:

解决问题方法的效率,跟空间的利用效率有关

例3:写程序计算给定多项式在给定点x处的值

在程序员圈子里,写第一种方法是会被鄙视的,因为第一个函数慢很多。下面可以写代码测试一下:

在上面的代码中,求duration的时候除了一个常数(CLK_TCK),就得到了一个以秒为单位的duration。

上面的不对,因为两个ticks都是0,所以duration也是0,那是因为这两个函数跑的太快了,运行的时间可能都不到一个tick那怎么办呢?

这个时候就有值出来了,这两组的数据的相对大小,应该都是差了一个数量级的样子。

解决问题方法的效率,还跟算法的巧妙程度是有关系的

所以到底什么是数据结构

逻辑结构(1对1、1对多等)
物理存储结构(数组存放、链表存放)

抽象数据类型

例4:“矩阵” 的抽象数据类型定义

对于上面这些,进行了抽象处理,为了的就是防止转换数据类型什么的时候出错。

おすすめ

転載: blog.csdn.net/qq_45696288/article/details/120827745