国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 邏輯算法 > 正文

PHP排序算法類實例

2020-03-22 16:33:58
字體:
供稿:網(wǎng)友
本文實例講述了PHP排序算法類。分享給大家供大家參考。具體如下:四種排序算法的PHP實現(xiàn):1) 插入排序(Insertion Sort)的基本思想是:
每次將一個待排序的記錄,按其關(guān)鍵字大小插入到前面已經(jīng)排好序的子文件中的適當(dāng)位置,直到全部記錄插入完成為止。2) 選擇排序(Selection Sort)的基本思想是:
每一趟從待排序的記錄中選出關(guān)鍵字最小的記錄,順序放在已排好序的子文件的最后,直到全部記錄排序完畢。3) 冒泡排序的基本思想是:
兩兩比較待排序記錄的關(guān)鍵字,發(fā)現(xiàn)兩個記錄的次序相反時即進行交換,直到?jīng)]有反序的記錄為止。4) 快速排序?qū)嵸|(zhì)上和冒泡排序一樣,都是屬于交換排序的一種應(yīng)用。所以基本思想和上面的冒泡排序是一樣的。1. sort.php文件如下: * @author quanshuidingdanghtml' target='_blank'>class Sort { private $arr = array(); private $sort = 'insert'; private $marker = '_sort'; private $debug = TRUE; * 構(gòu)造函數(shù) * @param array 例如: $config = array ( 'arr' = array(22,3,41,18) , //需要排序的數(shù)組值 'sort' = 'insert', //可能值: insert, select, bubble, quick 'debug' = TRUE //可能值: TRUE, FALSE public function __construct($config = array()) { if ( count($config) 0) { $this- _init($config); * 獲取排序結(jié)果 public function display() { return $this- * 初始化 * @param array * @return bool private function _init($config = array()) { //參數(shù)判斷 if ( !is_array($config) OR count($config) == 0) { if ($this- debug === TRUE) { $this- _log("sort_init_param_invaild"); return FALSE; //初始化成員變量 foreach ($config as $key = $val) { if ( isset($this- $key)) { $this- $key = $val; //調(diào)用相應(yīng)的成員方法完成排序 $method = $this- sort . $this- marker; if ( ! method_exists($this, $method)) { if ($this- debug === TRUE) { $this- _log("sort_method_invaild"); return FALSE; if ( FALSE === ($this- arr = $this- $method($this- arr))) return FALSE; return TRUE; * 插入排序 * @param array * @return bool private function insert_sort($arr) { //參數(shù)判斷 if ( ! is_array($arr) OR count($arr) == 0) { if ($this- debug === TRUE) { $this- _log("sort_array(insert)_invaild"); return FALSE; //具體實現(xiàn) $count = count($arr); for ($i = 1; $i $count; $i++) { $tmp = $arr[$i]; for($j = $i-1; $j $j--) { if($arr[$j] $tmp) { $arr[$j+1] = $arr[$j]; $arr[$j] = $tmp; return $arr; * 選擇排序 * @param array * @return bool private function select_sort($arr) { //參數(shù)判斷 if ( ! is_array($arr) OR count($arr) == 0) { if ($this- debug === TRUE) { $this- _log("sort_array(select)_invaild"); return FALSE; //具體實現(xiàn) $count = count($arr); for ($i = 0; $i $count-1; $i++) { $min = $i; for ($j = $i+1; $j $count; $j++) { if ($arr[$min] $arr[$j]) $min = $j; if ($min != $i) { $tmp = $arr[$min]; $arr[$min] = $arr[$i]; $arr[$i] = $tmp; return $arr; * 冒泡排序 * @param array * @return bool private function bubble_sort($arr) { //參數(shù)判斷 if ( ! is_array($arr) OR count($arr) == 0) { if ($this- debug === TRUE) { $this- _log("sort_array(bubble)_invaild"); return FALSE; //具體實現(xiàn) $count = count($arr); for ($i = 0; $i $count; $i++) { for ($j = $count-1; $j $j--) { if ($arr[$j] $arr[$j-1]) { $tmp = $arr[$j]; $arr[$j] = $arr[$j-1]; $arr[$j-1] = $tmp; return $arr; * 快速排序 * @param array * @return bool private function quick_sort($arr) { //具體實現(xiàn) if (count($arr) = 1) return $arr; $key = $arr[0]; $left_arr = array(); $right_arr = array(); for ($i = 1; $i count($arr); $i++){ if ($arr[$i] = $key) $left_arr[] = $arr[$i]; else $right_arr[] = $arr[$i]; $left_arr = $this- quick_sort($left_arr); $right_arr = $this- quick_sort($right_arr); return array_merge($left_arr, array($key), $right_arr); * 日志記錄 private function _log($msg) { $msg = 'date[' . date('Y-m-d H:i:s') . '] ' . $msg . '/n'; return @file_put_contents('sort_err.log', $msg, FILE_APPEND);/*End of file sort.php*//*Location htdocs/sort.php */2. sort_demo.php文件如下:require_once('sort.php');$config = array ( 'arr' = array(23, 22, 41, 18, 20, 12, 200303,2200,1192) , //需要排序的數(shù)組值 'sort' = 'select', //可能值: insert, select, bubble, quick 'debug' = TRUE //可能值: TRUE, FALSE$sort = new Sort($config);//var_dump($config['arr']);var_dump($sort- display());/*End of php*/希望本文所述對大家的php程序設(shè)計有所幫助。PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 海口市| 深泽县| 西昌市| 泉州市| 武安市| 福清市| 连山| 浠水县| 太湖县| 波密县| 凉城县| 双城市| 衡阳县| 喀什市| 高碑店市| 乐业县| 曲麻莱县| 宁夏| 承德县| 通榆县| 海城市| 武平县| 青神县| 济源市| 石台县| 商洛市| 徐闻县| 托克托县| 福安市| 松江区| 保康县| 务川| 金塔县| 澎湖县| 都兰县| 大田县| 榕江县| 石泉县| 宁强县| 嘉定区| 灯塔市|