❶ 數據結構-八大排序演算法的時間復雜度 穩定性
1:直接插入排序:
最好:待排序已經有序, 從前往後走都不用往裡面 插入。 時間復雜度為o(n)
最壞:待排序列是逆序,每一次都要移位插入。 時間復雜度o(n^2)
是穩定排序
2:希爾排序:
最好:縮小增量的插入排序,待排序已經有序。時間復雜度o(n)
一般:平均時間復雜度o(n 1.3),最差也是時間復雜度o(n 1.3)
不穩定排序
3:冒泡排序:
最好:待排序已經有序。時間復雜度o(n)
最壞:待排序是逆序。時間復雜度o(n^2)
穩定排序
4:快速排序:
最好:待排序無序。時間復雜度o(nlogn)
最壞: 待排序已經有序,基準定義在開始。 時間復雜度為o(n^2)
不穩定排序
5:直接選擇排序:
無論好壞:o(n^2)
穩定排序
6:堆排序:
無論好壞:時間復雜度o(nlogn)
不穩定排序
7:歸並排序:
穩定排序
8:基數排序:
無論好壞:o(d(n+r)) ,r為基數,d為位數.
穩定排序
❷ php底層原理 php是如何運行的
1、PHP動態語言執行過程:拿到一段代碼後,經過詞法解析、語法解析等階段後,源程序會被翻譯成一個個指令(opcodes),然後ZEND虛擬機順次執行這些指令完成操作。PHP本身是用C實現的,因此最頌蘆終調用的也是C的函數,實際上,我們可以把PHP看做一個C開發的軟體。
2、PHP的4層運行體系:
(1)Zend引擎:Zend整體用純C實現,是PHP的內核部分,他將PHP代碼翻譯(詞法、語法解析等一系列編譯過程)為可執行opcode的處理並實現相應的處理方法、實現了基本的數據結構(如:hashtable、OO)、內存分配機制及管理、提供了相應的api方法供外部調用,是一切的核心耐櫻凳,所有的外圍功能均圍繞Zend實現。
(2)Extensions:圍繞著Zend引擎,extensions通過組件式的方式提供各種基礎服務,我們常見的各種內置函數(array系列)、標准庫等都是通過extension來實現,用戶也可以根據需要實現自己的extension的典型應用)。
(3)Sapi:Sapi全稱,也就是服務端應用編程介面,Sapi通過一系列鉤子函數,使得PHP可以和外圍交互數據,這是PHP非常優雅和成功的設計,通過sapi成功的將PHP本身和上層應用解耦隔離,PHP可以不再考慮如何針對不同應用進行兼容,而應用本身也可以針對自己的特點實現不同的處理方式。
(4)上層應用:這就是我們平時編寫的PHP程序,通過不同的spai方式得到各種各樣的昌旅應用模式,如何通過webserver實現web應用、在命令行下已腳本方式運行等等。