【基本演算法】
假設有乙個陣列,需要找出某個值在該陣列中的位置。
<?
//二分查詢
function
bin_sch
($array
, $low
, $high
, $k
)elseif (
$k <
$array
[$mid
])else
} return -1;
} //順序查詢
function
seq_sch
($array
, $n
, $k
) }
if (
$i<
$n)else
} ?>
測試**:
array.txt 檔案裡面包含了一百萬條類似 2,3,4,5 這樣的資料,下面通過順序查詢和二分查詢來確定速度。
//二分查詢
<?php
set_time_limit(0
); $array
= array();
$file
= file_get_contents
("./array.txt"
);$array
= explode
(","
, $file
); sort
($array
); $st
= time
();
$k =
43;
$n =
count
($array
); $r
= bin_sch
($array, 0
, $n-1
, $k
); $et
= time
();
$t =
$et-
$st;
echo
"process time: "
. $t
."/s"
; ?>
以上輸出:
process time: 0/s
//順序查詢
<?php
set_time_limit(0
); $array
= array();
$file
= file_get_contents
("./array.txt"
); $array
= explode
(","
, $file
); $st
= time
();
$k =
43;
$n =
count
($array
); $r
= seq_sch
($array
, $n
, $k
);
$et
= time
();
$t =
$et-
$st;
echo
"process time: "
. $t
."/s"
; ?>
以上輸出結果:process time: 9/s
上面輕易就能夠看出誰的效率高了。
【演算法改進】
<?
//二分查詢(遞迴消除)
function
bin_sch
($array
, $n
, $k
)else
} return -1;
} //順序查詢(改進版)
function
seq_sch
($array
, $n
, $k
) }
if (
$i<
$n)else
} ?>
能看出上面兩個函式做了什麼改變嗎?效率提公升了多少?
php 實現查詢快取
適合讀者 本教程適合於那些對快取sql查詢以減少資料庫連線與執行的負載 提高指令碼效能感興趣的php程式設計師。概述 這樣乙個系統通過把sql查詢的結果快取到系統的乙個檔案中儲存,從而阻止連線資料庫,構造查詢與取得返回結果而提高了響應時間。有些系統資料庫並不是放在web伺服器上的,這樣需要乙個遠端連...
通過表關聯實現查詢
建資料庫students 建立三個 分別儲存學生,教師,課程資訊 mysql create table student key student int 5 not null auto increment,student name varchar 20 not null,primary key key...
PHP 資料結構 反轉鍊錶PHP實現
1.常見方法分為迭代和遞迴,迭代是從頭到尾,遞迴是從尾到頭 2.設定兩個指標,old和new,每一項新增在new的後面,新煉表頭指標指向新的煉表頭 3.old next不能直接指向new,而是應該設定乙個臨時指標tmp,指向old next指向的位址空間,儲存原鍊錶資料,然後old next指向ne...