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