亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP排序算法類實例

2024-05-04 23:36:20
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了PHP排序算法類,實例分析了插入排序、選擇排序、冒泡排序、快速排序等排序算法的原理與實現技巧,需要的朋友可以參考下

本文實例講述了PHP排序算法類。分享給大家供大家參考。具體如下:

四種排序算法的PHP實現:

1) 插入排序(Insertion Sort)的基本思想是:

每次將一個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子文件中的適當位置,直到全部記錄插入完成為止。

2) 選擇排序(Selection Sort)的基本思想是:

每一趟從待排序的記錄中選出關鍵字最小的記錄,順序放在已排好序的子文件的最后,直到全部記錄排序完畢。

3) 冒泡排序的基本思想是:

兩兩比較待排序記錄的關鍵字,發現兩個記錄的次序相反時即進行交換,直到沒有反序的記錄為止。

4) 快速排序實質上和冒泡排序一樣,都是屬于交換排序的一種應用。所以基本思想和上面的冒泡排序是一樣的。

1. sort.php文件如下:

 

 
  1. ?<?php 
  2. /** 
  3.  
  4. * @author quanshuidingdang 
  5. */ 
  6. class Sort { 
  7. private $arr = array();  
  8. private $sort = 'insert'
  9. private $marker = '_sort'
  10. private $debug = TRUE; 
  11. /** 
  12. * 構造函數 
  13. * 
  14. * @param array 例如: 
  15. $config = array ( 
  16. 'arr' => array(22,3,41,18) , //需要排序的數組值 
  17. 'sort' => 'insert', //可能值: insert, select, bubble, quick 
  18. 'debug' => TRUE //可能值: TRUE, FALSE 
  19. ) 
  20. */ 
  21. public function __construct($config = array()) { 
  22. if ( count($config) > 0) { 
  23. $this->_init($config); 
  24. /** 
  25. * 獲取排序結果 
  26. */ 
  27. public function display() { 
  28. return $this->arr; 
  29. /** 
  30. * 初始化 
  31. * 
  32. * @param array 
  33. * @return bool 
  34. */ 
  35. private function _init($config = array()) { 
  36. //參數判斷 
  37. if ( !is_array($config) OR count($config) == 0) { 
  38. if ($this->debug === TRUE) { 
  39. $this->_log("sort_init_param_invaild"); 
  40. return FALSE; 
  41. //初始化成員變量 
  42. foreach ($config as $key => $val) { 
  43. if ( isset($this->$key)) { 
  44. $this->$key = $val
  45. //調用相應的成員方法完成排序 
  46. $method = $this->sort . $this->marker; 
  47. if ( ! method_exists($this$method)) { 
  48. if ($this->debug === TRUE) { 
  49. $this->_log("sort_method_invaild"); 
  50. return FALSE; 
  51. if ( FALSE === ($this->arr = $this->$method($this->arr))) 
  52. return FALSE; 
  53. return TRUE; 
  54. /** 
  55. * 插入排序 
  56.  
  57. * @param array 
  58. * @return bool 
  59. */ 
  60. private function insert_sort($arr) { 
  61. //參數判斷 
  62. if ( ! is_array($arr) OR count($arr) == 0) { 
  63. if ($this->debug === TRUE) { 
  64. $this->_log("sort_array(insert)_invaild"); 
  65. return FALSE; 
  66. //具體實現 
  67. $count = count($arr); 
  68. for ($i = 1; $i < $count$i++) { 
  69. $tmp = $arr[$i]; 
  70. for($j = $i-1; $j >= 0; $j--) {  
  71. if($arr[$j] > $tmp) { 
  72. $arr[$j+1] = $arr[$j]; 
  73. $arr[$j] = $tmp
  74. return $arr
  75. /** 
  76. * 選擇排序 
  77.  
  78. * @param array 
  79. * @return bool 
  80. */ 
  81. private function select_sort($arr) { 
  82. //參數判斷 
  83. if ( ! is_array($arr) OR count($arr) == 0) { 
  84. if ($this->debug === TRUE) { 
  85. $this->_log("sort_array(select)_invaild"); 
  86. return FALSE; 
  87. //具體實現 
  88. $count = count($arr); 
  89. for ($i = 0; $i < $count-1; $i++) { 
  90. $min = $i
  91. for ($j = $i+1; $j < $count$j++) { 
  92. if ($arr[$min] > $arr[$j]) $min = $j
  93. if ($min != $i) { 
  94. $tmp = $arr[$min]; 
  95. $arr[$min] = $arr[$i]; 
  96. $arr[$i] = $tmp
  97. return $arr
  98. /** 
  99. * 冒泡排序 
  100.  
  101. * @param array 
  102. * @return bool 
  103. */ 
  104. private function bubble_sort($arr) { 
  105. //參數判斷 
  106. if ( ! is_array($arr) OR count($arr) == 0) { 
  107. if ($this->debug === TRUE) { 
  108. $this->_log("sort_array(bubble)_invaild"); 
  109. return FALSE; 
  110. //具體實現 
  111. $count = count($arr); 
  112. for ($i = 0; $i < $count$i++) { 
  113. for ($j = $count-1; $j > $i$j--) { 
  114. if ($arr[$j] < $arr[$j-1]) { 
  115. $tmp = $arr[$j]; 
  116. $arr[$j] = $arr[$j-1]; 
  117. $arr[$j-1] = $tmp
  118. return $arr;  
  119. /** 
  120. * 快速排序 
  121.  
  122. * @param array 
  123. * @return bool 
  124. */ 
  125. private function quick_sort($arr) { 
  126. //具體實現 
  127. if (count($arr) <= 1) return $arr;  
  128. $key = $arr[0]; 
  129. $left_arr = array(); 
  130. $right_arr = array(); 
  131. for ($i = 1; $i < count($arr); $i++){ 
  132. if ($arr[$i] <= $key
  133. $left_arr[] = $arr[$i]; 
  134. else 
  135. $right_arr[] = $arr[$i]; 
  136. $left_arr = $this->quick_sort($left_arr); 
  137. $right_arr = $this->quick_sort($right_arr);  
  138.  
  139. return array_merge($left_arrarray($key), $right_arr); 
  140. /** 
  141. * 日志記錄 
  142. */ 
  143. private function _log($msg) { 
  144. $msg = 'date[' . date('Y-m-d H:i:s') . '] ' . $msg . '/n'
  145. return @file_put_contents('sort_err.log'$msg, FILE_APPEND); 
  146. /*End of file sort.php*/ 
  147. /*Location htdocs/sort.php */ 

2. sort_demo.php文件如下:

 

 
  1. ?<?php 
  2. require_once('sort.php'); 
  3. $config = array ( 
  4. 'arr' => array(23, 22, 41, 18, 20, 12, 200303,2200,1192) , 
  5. //需要排序的數組值 
  6. 'sort' => 'select'
  7. //可能值: insert, select, bubble, quick 
  8. 'debug' => TRUE 
  9. //可能值: TRUE, FALSE 
  10. ); 
  11. $sort = new Sort($config); 
  12. //var_dump($config['arr']); 
  13. var_dump($sort->display()); 
  14. /*End of php*/ 

希望本文所述對大家的php程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成avwww人| 精品中文字幕在线2019| 欧美尤物巨大精品爽| 国产午夜精品美女视频明星a级| 九色精品美女在线| 欧美高清无遮挡| 国产精品一区二区三区免费视频| 欧美成人中文字幕在线| 久久精品国产99国产精品澳门| 国产精品久久久久久久久免费| 亚洲性无码av在线| 久久免费国产精品1| 欧美精品18videosex性欧美| 91免费电影网站| 欧美日韩不卡合集视频| 国产成人精品视频在线观看| 亚洲第一视频在线观看| 麻豆乱码国产一区二区三区| 日韩av电影在线播放| 欧美极品美女视频网站在线观看免费| 日韩欧美在线免费观看| 91亚洲精品一区二区| 在线观看视频亚洲| 精品亚洲夜色av98在线观看| 日韩成人激情视频| 精品夜色国产国偷在线| 91精品国产色综合久久不卡98| 精品女同一区二区三区在线播放| 色噜噜亚洲精品中文字幕| 午夜精品一区二区三区在线| 欧美激情一区二区三区成人| 久久精品成人欧美大片| 91在线观看免费| 亚洲激情视频在线| 中文字幕日韩av| 国产精品专区h在线观看| 色爱av美腿丝袜综合粉嫩av| 日韩欧美在线视频日韩欧美在线视频| 性色av一区二区三区在线观看| 欧美日韩国产va另类| 亚洲精品国产精品久久清纯直播| 欧美一区在线直播| 欧美性xxxx18| 亚洲美女在线视频| 日韩电影在线观看永久视频免费网站| 国产精品69久久久久| 亚洲欧美中文日韩在线v日本| 2019最新中文字幕| 亚洲最大福利网| 国产精品免费久久久久影院| 精品久久久久久久久久久| 91久久精品视频| 国产精品美女午夜av| 亚洲男人第一av网站| 最近2019年中文视频免费在线观看| 亚洲图中文字幕| 午夜剧场成人观在线视频免费观看| 国产综合视频在线观看| 中日韩午夜理伦电影免费| 成人免费淫片视频软件| 色悠悠国产精品| 国产丝袜一区二区三区免费视频| 国产精品免费观看在线| 久久久www成人免费精品| 欧美一级黑人aaaaaaa做受| 日韩在线视频免费观看高清中文| 亚洲图片制服诱惑| 欧美男插女视频| 久久综合五月天| 91精品在线观看视频| 精品日本高清在线播放| 精品中文字幕在线| 98精品国产高清在线xxxx天堂| 91久久精品国产91久久| 欧美日韩在线第一页| 欧美在线不卡区| 高潮白浆女日韩av免费看| 久久国产精品影视| 一区二区三区高清国产| 久久久欧美一区二区| 亚洲欧美色图片| 日韩中文字幕在线| 国产成人精品日本亚洲专区61| 韩国v欧美v日本v亚洲| 91嫩草在线视频| 色爱av美腿丝袜综合粉嫩av| 成人在线观看视频网站| 美女黄色丝袜一区| 午夜精品久久久久久久久久久久| 在线视频日韩精品| 韩国精品美女www爽爽爽视频| 在线观看成人黄色| 亚洲高清免费观看高清完整版| 亚洲精品一区二区网址| 在线播放精品一区二区三区| 5566日本婷婷色中文字幕97| 久久久久免费视频| 日韩中文在线观看| 黄网动漫久久久| 日韩av中文在线| 国产91对白在线播放| 日韩美女视频免费看| 国产成人精品久久二区二区| 国产精品美女主播在线观看纯欲| 精品毛片网大全| 欧美午夜视频在线观看| 成人网欧美在线视频| 奇米4444一区二区三区| 青草青草久热精品视频在线观看| 欧美日韩精品二区| 性亚洲最疯狂xxxx高清| 5278欧美一区二区三区| 精品国产自在精品国产浪潮| 97国产精品免费视频| 91精品国产亚洲| 最近2019年中文视频免费在线观看| 2025国产精品视频| 日韩电影免费在线观看中文字幕| 亚洲成人久久久| 亚洲精品久久久久中文字幕二区| 丝袜美腿精品国产二区| 97在线视频免费| 成人黄色av免费在线观看| 欧美—级a级欧美特级ar全黄| 国产999在线观看| 日韩欧美aⅴ综合网站发布| 欧美成aaa人片在线观看蜜臀| 国产精品久久久一区| 成人中文字幕在线观看| 精品五月天久久| 亚洲国产高清高潮精品美女| 91精品综合视频| 久热精品视频在线免费观看| 欧美一级大胆视频| 国产精品人人做人人爽| 亚洲天堂av综合网| 久久国产精品亚洲| 亚洲人av在线影院| 国产成人鲁鲁免费视频a| 日韩禁在线播放| 2019国产精品自在线拍国产不卡| 久久成人av网站| 国产97在线观看| 欧美激情国产高清| 久久免费少妇高潮久久精品99| 成人情趣片在线观看免费| 亚洲欧美在线播放| 成人免费视频a| 全色精品综合影院| 亚洲国产成人精品久久| 在线日韩欧美视频| 欧美体内谢she精2性欧美| 日韩精品视频在线播放| 免费99精品国产自在在线| 色悠悠久久88| 欧美成年人视频网站欧美| 国产精品国产三级国产专播精品人| 欧美激情精品久久久久| 在线电影欧美日韩一区二区私密| 亚洲网站视频福利| 欧美电影在线观看| 69av在线播放| 久久久亚洲成人| 亚洲国产中文字幕在线观看|