1:資料結構的基本概念
資料元素:組成資料的,有一定意義的基本單位
資料項:乙個資料元素可以由若干個資料項組成
資料物件:性質相同的資料元素的集合
資料結構:資料結構是計算機用來組織和儲存資料的方式!具體意義:資料結構是指相互之間存在著一種或者多種關係的資料元素的集合和該集合中資料元素之間的關係組成
2:演算法和演算法的時間複雜度
時間複雜度:
最高端的執行次數
常見的時間複雜度:常數階o(1),線性階o(n),平方階,對數階,nlogn階,立方階,指數階
把最高端的常數拿掉,剩下的就是時間複雜度的值
3:常見的資料結構:線性表,佇列,堆疊,樹
線性表的特點:
定義:零個或多個資料元素的有限序列
除掉首尾外,均只有乙個直接的前驅和直接的後繼
乙個資料元素可以有若干個資料項組成
線性表有順序儲存和鏈式儲存兩種儲存結構
堆疊,佇列,串,陣列等都是線性表
單鏈表:
struct_singlelink.php(單鏈表),findking.php(環形鍊錶,猴子選大王),
用php實現單鏈表
(見附表)
雙向鍊錶:(暫時沒有用php實現的**,不過原理跟php實現單鏈表相似)
迴圈單鏈表:
迴圈單鏈表是從單鏈表發展而來,與單鏈表不同的是,其末尾節點的next域指向的head,此時就形成了乙個迴圈的乙個圓
用php實現迴圈單鏈表的**:(見附表)
佇列:先進先出
它是一種只允許在一端進行插入,在另一端進行刪除的運算受限的線性表
(1)允許刪除的一端是隊頭(front)
(2)允許插入的一端為隊尾(rear)
(3)當佇列中沒有元素時稱為空佇列
原理圖如下:
用php實現佇列的增刪改查**(見附表)
堆疊:通常只是指棧資訊,先進後出
用php實現堆疊
(見附表)
樹:(php實現二叉樹)tree search_tree
無序樹:樹中任意節點的子節點之間沒有順序關係,這種樹稱為無序樹,也稱為自由樹;
有序樹:樹中任意節點的子節點之間有順序關係,這種樹稱為有序樹;
二叉樹:每個節點最多含有兩個子樹的樹稱為二叉樹;
完全二叉樹:對於一顆二叉樹,假設其深度為d(d>1)。除了第d層外,其它各層的節點數目均已達最大值,且第d層所有節點從左向右連續地緊密排列,這樣的二叉樹被稱為完全二叉樹;
滿二叉樹:對於上述的完全二叉樹,如果去掉其第d層的所有節點,那麼剩下的部分就構成乙個滿二叉樹(此時該滿二叉樹的深度為d-1);
遍歷二叉樹:
用php實現二叉樹(見附表)
二叉查詢(排序)樹:
特點:(1)若左子樹不空,則左子樹上所有的節點的值均小於它的根節點的值
(2)若右子樹不空,則右子樹上所有的節點的值均大於它的根節點的值
(3)左右子樹也分別是二叉查詢(排序)樹
用php實現二叉查詢樹(見附表)
4:遞迴和迴圈的相互轉換
遞迴:recursion就是自呼叫,使用遞迴必須要有明確的遞迴結束條件
例項:1:1+2+3+........+n
兔子繁殖問題:$n
=1000
;
countn($n
);
echo $value/$n
;
function
countn ($n
)
}
遞迴和迴圈的對比:php
function
rabbit
($num,$m
,$n =1
)
}
rabbit(1
,12);
echo $result
;
5:常見的查詢和排序演算法
二叉平衡查詢:(需要自己查)
ll當插入的節點是往左子樹的左子節點插入時需要右旋
rr當插入的節點是往右子樹的右子節點插入時需要左旋
lr:左子樹的右節點上新增時 先左後右旋轉
rl:先右後左
演算法:
二分查詢:(陣列必須是有序的,從小到大,或者從大到小)
插值查詢:
排序:
什麼叫排序:
內排序和外排序:在記憶體中進行排序的叫內排序(其餘的就是外排序)
什麼是穩定的排序演算法:
正序和逆序的排序比較次數是一樣的
評價排序演算法的標準有:執行時間和所需的輔助空間,其次是演算法的穩定性
氣泡排序:每次迴圈都做數值的交換
快速排序:對陣列進行遍歷,一般選取第乙個作為標準,大的放一組,小的放一組,最後進行遞迴,再合併陣列
簡單選擇排序:
每次迴圈都取出最小值,記住其下標,最後統一調換到陣列的最前面
直接插入排序:(這個不太理解)
6: 需要問的問題 :
堆排序二叉查詢樹**分析
php的資料結構 PHP 資料結構演算法
基本資料結構演算法 二分查詢 陣列裡查詢某個元素 function bin sch array,low,high,k elseif k array mid elseelseelseelse return false return 0 查詢字串 function strstr str,substr m...
PHP 資料結構演算法
基本資料結構演算法 二分查詢 陣列裡查詢某個元素 function bin sch array,low,high,k elseif k array mid else return 1 順序查詢 陣列裡查詢某個元素 function seq sch array,n,k if i n else 線性表的...
PHP 資料結構演算法
基本資料結構演算法 二分查詢 陣列裡查詢某個元素 function bin sch array,low,high,k elseif k array mid else return 1 順序查詢 陣列裡查詢某個元素 function seq sch array,n,k if i n else 線性表的...