全面实现PHP排序算法
创始人
2024-06-11 22:20:31
0

学习PHP时,你可能会遇到 PHP排序问题,这里将介绍 PHP排序问题的解决方法,在这里拿出来和大家分享一下。每年总是要隔三差五的看数据结构,每次总是觉得自己很多东西没有学好,唉。

#T#今天贴刚使用php实现4的排序算法,另外堆排序和归并排序没有写。插入排序、选择排序、,冒泡排序,时间复杂度貌似都是 O(N2),所以实际意义不大,在实际测试中,我对3000个数组元素进行,这三种排序算法都需要花费80秒左右,而快速排序只需要8秒,差距确是比较大,有兴趣的可以自己测试一下。下面我们就详细的看看你PHP排序算法的实现吧。

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

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...