当前位置:首页 > PHP教程 > php应用 > 列表

PHP中实现冒泡排序和快速排序算法示例

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-04 16:59:03 浏览: 评论:0 

冒泡排序和快速排序算法在开发应用中各有优点了,下面我们来看几个关于php排序的几个例子.

使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组。

使用PHP描述顺序查找和二分查找,也叫做折半查找算法,顺序查找必须考虑效率,对象可以是一个有序数组.

写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数.

1.使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组,代码如下:

  1. function bubble_sort($array) 
  2. { 
  3. $count = count($array); 
  4. if ($count <= 0) return false; 
  5. for($i=0; $i<$count; $i++){ 
  6. for($j=$count-1; $j>$i; $j–){ 
  7. if ($array[$j] < $array[$j-1]){ 
  8. $tmp = $array[$j]; 
  9. $array[$j] = $array[$j-1]; 
  10. $array[$j-1] = $tmp; 
  11. } 
  12. } 
  13. } 
  14. return $array; 
  15. } 
  16. //开源软件:phpfensi.com 
  17. function quick_sort($array) { 
  18. if (count($array) <= 1) return $array; 
  19. $key = $array[0]; 
  20. $left_arr = $right_arr = array(); 
  21. foreach ($array as $val){ 
  22. if ($val < = $key) 
  23. $left_arr[] = $val; 
  24. else 
  25. $right_arr[] = $val; 
  26. } 
  27. $left_arr = quick_sort($left_arr); 
  28. $right_arr = quick_sort($right_arr); 
  29. return array_merge($left_arr, array($key), $right_arr); 
  30. } 

2.使用PHP描述顺序查找和二分查找,也叫做折半查找算法,顺序查找必须考虑效率,对象可以是一个有序数组,代码如下:

  1. function bin_sch($array, $low, $high, $k){ 
  2. if ($low <= $high){ 
  3. $mid = intval(($low+$high)/2); 
  4. if ($array[$mid] == $k){ 
  5. return $mid; 
  6. }elseif ($k < $array[$mid]){ 
  7. return bin_sch($array, $low, $mid-1, $k); 
  8. }else{ 
  9. return bin_sch($array, $mid+1, $high, $k); 
  10. } 
  11. } 
  12. return -1; 
  13. }function seq_sch($array, $n, $k){ 
  14. $array[$n] = $k; 
  15. for($i=0; $i<$n; $i++){ 
  16. if($array[$i]==$k){ 
  17. break; 
  18. } 
  19. } 
  20. if ($i<$n){ 
  21. return $i; 
  22. }else{ 
  23. return -1; 
  24. } 
  25. } 

3.写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数,代码如下:

  1. function array_sort($arr, $keys, $order=0) { 
  2. if (!is_array($arr)) { 
  3. return false; 
  4. } 
  5. $keysvalue = array(); 
  6. foreach($arr as $key => $val) { 
  7. $keysvalue[$key] = $val[$keys]; 
  8. } 
  9. if($order == 0){ 
  10. asort($keysvalue); 
  11. }else { 
  12. arsort($keysvalue); 
  13. } 
  14. reset($keysvalue); 
  15. foreach($keysvalue as $key => $vals) { 
  16. $keysort[$key] = $key; 
  17. } 
  18. $new_array = array(); 
  19. foreach($keysort as $key => $val) { 
  20. $new_array[$key] = $arr[$val]; 
  21. } 
  22. return $new_array; 
  23. }

Tags: PHP冒泡排序 PHP排序算法

分享到: