基礎準備
我的使用驗算的步驟是
生成資料 -> 記錄時間 -> 進行排序 -> 記錄時間 -> 驗算是否正確 -> 歸類時間
那麼我們,需要生成資料的函式,達到毫秒的函式,可以測算出是否已經排序成功的函式
首先生成可用測試的隨機資料(函式)
- 這是驗算的資料,所以只需要混交的就行
- 通過傳入所需要生成的總數,生成
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); }
本作品採用《CC 協議》,轉載必須註明作者和本文連結
TimAutumnWind (轉載請註明出處 https://learnku.com/articles/39442)