基礎準備
我的使用驗算的步驟是
生成資料 -> 記錄時間 -> 進行排序 -> 記錄時間 -> 驗算是否正確 -> 歸類時間
那么我們,需要生成資料的函式,達到毫秒的函式,可以測算出是否已經排序成功的函式
首先生成可用測驗的隨機資料(函式)
- 這是驗算的資料,所以只需要混交的就行
- 通過傳入所需要生成的總數,生成 num 條資料,比如:10 條
- 資料內容是隨機從開始到結束的數字,比如:從 1 到 10
- 注意 rangeR 要比 rangeL 小
/**
* 生成隨機資料
* @param int $num 需要生成的總數
* @param int $rangeL 開始數字
* @param int $rangeR 結束數字
* @return array
*/
function generateSort(int $num,int $rangeL,int $rangeR):array {
$sort = array();
for ($i = 0; $i < $num;$i++){
$sort[$i] = rand($rangeL,$rangeR);
}
return $sort;
}
還有生成一種近乎有序的資料(函式)
- 和上面類似
- 但是隨機最小值會往上走,達到近乎有序
/**
* 生成隨機資料
* @param int $num 需要生成的總數
* @param int $rangeL 開始數字
* @param int $rangeR 結束數字
* @return array
*/
function generateSort(int $num,int $rangeL,int $rangeR):array {
$sort = array();
for ($i = 0; $i < $num;$i++){
$sort[$i] = rand($rangeL + $i,$rangeR);
}
return $sort;
}
驗算是否排序正確的(函式)
- 我這里做的比較簡單
- 回圈一次,當上一個數字,比下一個數字要小的時候則是不正確
- 在我們生成數字的時候,是絕對不會相對有序的
/**
* 驗算是否正確
* @param array $sort
* @return bool
*/
function isSort(array $sort):bool {
$n = count($sort);
for($i = 0; $i < $n - 1; $i++){
if($sort[$i] > $sort[$i + 1]){
return false;
}
}
return true;
}
獲取毫秒時間(函式)
- 在
php中是沒有毫秒函式的,只能自己寫一個 - 在資料量小的情況下,演算法是按照毫秒計算的,不是秒
/**
* 獲取毫秒時間
* @return float
*/
function millisecond():float {
list($msec, $sec) = explode(' ', microtime());
return (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
}
列印函式
- 因為我們用的是原生的
php,而且用的是fpm, - 資料列印在瀏覽器上,為了我們的視覺感受,我覺得這個有必要
/**
* 一個好看一點的列印函式
* @param $var
*/
function dump($var){
ob_start();
var_dump($var);
$output = preg_replace('/\]\=\>\n(\s+)/m', '] => ', ob_get_clean());
if (!extension_loaded('xdebug')) {
$output = htmlspecialchars($output, ENT_SUBSTITUTE);
}
$output = '<pre>' . $output . '</pre>';
echo($output);
}
更多學習內容請訪問:
八重櫻:騰訊T3-T4標準精品PHP架構師教程目錄大全,只要你看完保證薪資上升一個臺階(持續更新)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/73404.html
標籤:PHP
