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大结构

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM