程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 全面實現PHP排序算法

全面實現PHP排序算法

編輯:關於PHP編程

學習PHP時,你可能會遇到 PHP排序問題,這裡將介紹 PHP排序問題的解決方法,在這裡拿出來和大家分享一下。每年總是要隔三差五的看數據結構,每次總是覺得自己很多東西沒有學好,唉。

今天貼剛使用php實現4的排序算法,另外堆排序和歸並排序沒有寫。插入排序、選擇排序、,冒泡排序,時間復雜度貌似都是 O(N2),所以實際意義不大,在實際測試中,我對3000個數組元素進行,這三種排序算法都需要花費80秒左右,而快速排序只需要8秒,差距確是比較大,有興趣的可以自己測試一下。下面我們就詳細的看看你PHP排序算法的實現吧。

  1. <? 
  2. //插入排序(一維數組)  
  3. function insert_sort($arr){  
  4. $countcount = count($arr);  
  5. for($i=1; $i<$count; $i++){  
  6. $tmp = $arr[$i];  
  7. $j = $i - 1;  
  8. while($arr[$j] > $tmp){  
  9. $arr[$j+1] = $arr[$j];  
  10. $arr[$j] = $tmp;  
  11. $j--;  
  12. }  
  13. }  
  14. return $arr;  
  15. }  
  16.  
  17.  
  18. //選擇排序(一維數組)  
  19. function select_sort($arr){  
  20. $countcount = count($arr);  
  21. for($i=0; $i<$count; $i++){  
  22. $k = $i;  
  23. for($j=$i+1; $j<$count; $j++){  
  24. if ($arr[$k] > $arr[$j])  
  25. $k = $j;  
  26. if ($k != $i){  
  27. $tmp = $arr[$i];  
  28. $arr[$i] = $arr[$k];  
  29. $arr[$k] = $tmp;  
  30. }  
  31. }  
  32. }  
  33. return $arr;  
  34. }  
  35.  
  36. //冒泡排序(一維數組)   
  37. function bubble_sort($array){   
  38. $countcount = count($array);   
  39. if ($count <= 0) return false;   
  40.  
  41. for($i=0; $i<$count; $i++){   
  42. for($j=$count-1; $j>$i; $j--){   
  43. if ($array[$j] < $array[$j-1]){   
  44. $tmp = $array[$j];   
  45. $array[$j] = $array[$j-1];   
  46. $array[$j-1] = $tmp;   
  47. }   
  48. }   
  49. }   
  50. return $array;   
  51. }   
  52.  
  53. //快速排序(一維數組)   
  54. function quick_sort($array){   
  55. if (count($array) <= 1) return $array;   
  56.  
  57. $key = $array[0];   
  58. $left_arr = array();   
  59. $right_arr = array();   
  60. for ($i=1; $i<count($array); $i++){   
  61. if ($array[$i] <= $key)   
  62. $left_arr[] = $array[$i];   
  63. else   
  64. $right_arr[] = $array[$i];   
  65. }   
  66. $left_arr = quick_sort($left_arr);   
  67. $right_arr = quick_sort($right_arr);   
  68.  
  69. return array_merge($left_arr, array($key), $right_arr);   
  70. }   
  71.  
  72. ?> 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved