php数据结构课程---1、数据结构基础介绍(程序是什么)
php数据结构课程---1、数据结构基础介绍(程序是什么)
一、总结
一句话总结:
程序=数据结构+算法
设计好数据结构,程序就等于成功了一半。
数据结构是程序设计的基石。
1、数据的逻辑结构和物理结构是什么?
逻辑结构:比如线性链表,树,图
物理结构:就是数据的存储结构
2、数据的物理存储方式有哪些,并且各自的优缺点是什么?
顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元里,元素之间的关系由存储单元的邻接关系来体现。一般适用于线性的数组和链表,对于非线性的树和图则不适合。
链接存储:不要求逻辑上相邻的元素在物理位置上也相邻,借助指示元素存储地址的指针表示元素之间的逻辑关系。其优点是不会出现碎片现象,充分利用所有存储单元;缺点是每个元素因存储指针而占用额外的存储空间,并且只能实现顺序存取。
索引存储:在存储元素信息的同时,还建立附加的索引表。索引表中的每一项称为索引项,索引项的一般形式是:(关键字,地址)。其优点是检索速度快;缺点是增加了附加的索引表,会占用较多的存储空间。另外,在增加和删除数据时要修改索引表,因而会花费较多的时间。
散列存储:根据元素的关键字直接计算出该元素的存储地址,又称为Hash存储。其优点是检索、增加和删除结点的操作都很快;缺点是如果散列函数不好可能出现元素存储单元的冲突,而解决冲突会增加时间和空间开销。
3、多层循环如何转递归?
将循环层数和需要求的结果作为递归参数
|||-begin
$sum=0;
for ($i=1; $i <= 100 ; $i++) {
for ($j=1; $j <=100 ; $j++) {
for ($k=1; $k <=100 ; $k++) {
$sum++;
}
}
}
echo $sum."<br>";
o(n^3)
|||-end
任何时候循环都可以使用递归来实现。 //$n:循环层数
function recursion($n,&$sum){
for ($i=1; $i <=100 ; $i++) {
if($n==1){
$sum++;
}else{
recursion($n-1,$sum);
}
}
}
轻松实现任意层循环。
4、常用时间复杂度排序?
O(1) 常数阶 < O(logn) 对数阶 < O(n) 线性阶 < O(nlogn) < O(n^2) 平方阶 < O(n^3) < { O(2^n) < O(n!) < O(n^n)不推荐 }
红色算法复杂度不推荐,如果程序是如此高的复杂度,直接考虑换算法。
5、算法的空间复杂度包括哪些部分所占的空间?
程序所占,初始数据,辅助空间:一个算法的空间复杂度包括算法程序所占用的空间,同时还包含初始数据所占用的空间以及算法执行过程中所需要的额外辅助空间。
(1)固定部分。主要包括指令空间(即代码空间)、数据空间(常量、简单变量)等所占的空间。这部分属于静态空间。
(2)可变空间,这部分空间的主要包括动态分配的空间,以及递归栈所需的空间等。这部分的空间大小与算法有关。
6、数据结构三大特征?
逻辑结构:线性(线性表、堆栈、数组等)和非线性(比如树图)
物理(存储)结构:顺序、链式、索引、散列
数据运算:增删改查、排序等
二、内容在总结中
数据3大结构
php数据结构课程---1、数据结构基础介绍(程序是什么)的更多相关文章
- PHP数据结构之一:PHP数据结构基本概念—数据结构
学习任何一种技术都应该先清楚它的基本概念,这是学习任何知识的起点!本文是讲述数据结构的基本概念,适合对数据结构已经有一定基础的程序员,更是适合想要学习数据结构的code一族!让我们开始PHP数据结构的 ...
- 数据结构的C语言基础
数据结构的C语言基础 1. 数据输出 printf()函数为格式输出函数,它存在于标准函数库中,在C语言程序中可以直接调用,但程序源文件的开头必须包含以下命令: #include < stdi ...
- laravel基础课程---1、laravel安装及基础介绍(laravel如何安装)
laravel基础课程---1.laravel安装及基础介绍(laravel如何安装) 一.总结 一句话总结: [修改composer镜像地址].[明确laravel的安装要求].[安装指定版本的la ...
- php数据结构课程---4、栈(是什么)
php数据结构课程---4.栈(是什么) 一.总结 一句话总结: 栈(stack),它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算. 1.栈的链表实现? 定义node,设置属性d ...
- php数据结构课程---3、队列(队列实现方法)
php数据结构课程---3.队列(队列实现方法) 一.总结 一句话总结: 1.数据实现:适用于功能不复杂的情况 2.链表实现:受限链表,只能队头队尾操作:适用于功能复杂情况 1.队列的数组实现注意点? ...
- php数据结构课程---2、链表(php中 是如何实现单链表的(也就是php中如何实现对象引用的))
php数据结构课程---2.链表(php中 是如何实现单链表的(也就是php中如何实现对象引用的)) 一.总结 一句话总结: php是弱类型语言,变量即可表示数值,也可表示对象:链表节点的数据域的值就 ...
- php数据结构课程---7、队列实战
php数据结构课程---7.队列实战 一.总结 一句话总结: 注意条件:注意循环的条件(比如while循环打印队列元素时),注意if的条件 把问题想清楚:比如链表操作初次插入元素和后面再插,效果是不一 ...
- php数据结构课程---6、常见排序有哪些
php数据结构课程---6.常见排序有哪些 一.总结 一句话总结: 冒泡排序(Bubble sort):依次交换 选择排序 ( Selection Sort ):在未排序序列中找到最小(大)元素,依次 ...
- php数据结构课程---5、树(树的 存储方式 有哪些)
php数据结构课程---5.树(树的 存储方式 有哪些) 一.总结 一句话总结: 双亲表示法:data parent:$tree[1] = ["B",0]; 孩子表示法:data ...
随机推荐
- php使用imagick模块实现图片缩放、裁剪、压缩示例
PHP 使用Imagick模块 缩放,裁剪,压缩图片 包括gif图片 缩放 裁剪 复制代码代码如下: /** * 图片裁剪 * 裁剪规则: * 1. 高度为空或为零 按宽度缩放 高度自适 ...
- 如何在Windows 10 IoT Core中添加其他语言的支持,如中文
目前很多开发者已经开始使用Windows 10 IoT来做物联网领域的开发了,目前Windows 10 IoT Core的版本支持树莓派2(以及新出的树莓派3).Minnowboard Max以及Dr ...
- find 多文件查找需要单引号
[root@db01 local]# find -name '*.com'|xargs egrep "qq"./tt.com:qq[root@db01 local]# find ...
- zookeeper应用场景之配置文件同步
p=2628">http://www.firefoxbug.net/?p=2628
- ios错误ignoring file xxx missing required architecture x86_64 in file
错误ignoring file xxx missing required architecture x86_64 in file 解决方法: 1.在Project target里“Architectu ...
- Android Studio报Error:Execution failed for task ':Companion:preDexDebug'.
错误例如以下: Error:Execution failed for task ':Companion:preDexDebug'. > com.android.ide.common.proces ...
- 如何基于EasyDSS体系的全套SDK完成各种场景下的视频应用需求
需求背景 回顾EasyDSS的发展过程,基本上保持的是先局部后系统.先组件后平台的发展方式,一步一步夯实每一个细节功能点,从最基础.最兼容的音视频数据的拉流获取,到高效的.全兼容的数据推流,再到流媒体 ...
- SpringMVC拦截器实现用户登录拦截
本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现 当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面 核心代码 首先是index.jsp,显示链接 1 < ...
- centos7 PXE自动安装环境搭建
原理: 要进行自动安装的主机A,加电启动时以网卡为第一启动设备 1.启动时会向网络广播,找到dhcp服务器B请求分配IP地址信息,服务器B除了给其分配基本的IP信息(ip.netmask.getewa ...
- html5 (新一代的html)
简介 h5的新特性: cavas / video / audio / cache / element / form 最小的h5文档: <!DOCTYPE html> <html> ...