什么是数据结构
2022/9/8 23:53:08
本文主要是介绍什么是数据结构,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数据结构
数据结构是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最有效率算法。
利用代码解决实际问题,最重要的是解决问题的效率,主要是两个因素:
- 空间的分配效率(物理存储结构)
- 算法的巧妙程度(逻辑结构:一对一线性、一对多树性、多对多关系网)
- 数据对象在计算机中的组织方式
- 数据对象必定与一系列加在其上的操作相关联
(完成这些操作所用的方法就是算法)
抽象数据类型
抽象数据类型的两个要素(数据对象集、数据集合相关联的操作集)
首先理解"抽象"的意义:
- 描述数据类型的方法不依赖于具体实现,这种描述,与存放数据的机器无关,与存放数据的物理结构无关,与实现操作的算法和编程语言无关。只描述数据对象集和相关操作集"是什么",并不涉及如何实现的问题。
- 好的描述,就是提高函数、算法的包容性,尽可能让多的种类的数据类型参与计算。
算法
什么是算法?
- 一个有限的指令集
- 接受一些输入(亦可无)
- 产生输出结果
- 一定在有限的步骤后停止
- 每一条指令必须有明确的的目标,在计算机的处理范围之内,“描述”时,不依赖于任何一种计算机语言以及实现手段。
什么是好的算法?(两个指标)
- 空间复杂度S(n)——根据算法写成的程序在执行时占用存储空间的长度。
- 时间复杂度T(n)——根据算法写成的程序在执行时消耗时间的长度。
(两者都与数据规模有关)
一、空间复杂度
void PrintN(int N){………………//这个是函数,下面是它的功能 if(N){………………………………………//若N不为0,则就执行 PrintN(N-1);……………//此行的意义就是调用自己,即再进行判断,再执行功能 printf("%d\n",N);//此行执行无关上一行 } }
如果说N = 1000000000000,则就出现系统报错,原因是,函数在每一次调用时都是需要申领空间的,数据规模太大就导致内存爆满。当然存在不需要申领空间的方式实现该目的,所以这也是我们需要注意的地方。
二、时间复杂度
代码一: double f(int n,double a[],double x){ int i; double p = a[0]; for(i = n; i > 0; i++);{ p += (a[i]*pow(x,i)); } return p; } 代码二: double f(int n, double a[], double x){ int i; double p = a[n]; for(i = n; i>0; i--){ p = a[i - 1] + x*p; } return p; }
若果说n为10000000000,代码一的用时必定比代码二的用时多,原因是前者的乘法运算量远远大于后者,并且乘除法用时是要多于加减法的。程序运行的总用时,是各个环节时间的累积。
这篇关于什么是数据结构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?