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

php冒泡排序、快速排序、快速查找、二维数组去重实例分享

发布:smiling 来源: PHP粉丝网  添加日期:2020-11-20 10:36:18 浏览: 评论:0 

这篇文章主要介绍了php冒泡排序、快速排序、快速查找、二维数组去重实例分享,需要的朋友可以参考下。

一、冒泡排序,代码如下:

  1. //冒泡排序 
  2. function bubble_sort($array
  3.     $count=count($array); 
  4.     if($count <= 0){ 
  5.         return false; 
  6.     } 
  7.     for($i=0;$i<$count;$i++){ 
  8.         for($j=0;$j<$count-$i-1;$j++){ 
  9.             if$array[$j] > $array[$j+1] ){ 
  10.                 $temp=$array[$j]; 
  11.                 $array[$j]=$array[$j+1]; 
  12.                 $array[$j+1]=$temp
  13.             } 
  14.         } 
  15.     } 
  16.     return $array

二、快速排序,代码如下:

  1. //快排 
  2. function quick_sort($array
  3.     $count=count($array); 
  4.     if($count <= 1){ 
  5.         return $array
  6.     } 
  7.     $key=$array[0]; 
  8.     $array_left=array(); 
  9.     $array_right=array(); 
  10.     for($i=1;$i<$count;$i++){ 
  11.         if($array[$i] < $key ){ 
  12.             $array_left[]=$array[$i]; 
  13.         }else
  14.             $array_right[]=$array[$i]; 
  15.         } 
  16.     } 
  17.     $array_left=quick_sort($array_left); 
  18.     $array_right=quick_sort($array_right); 
  19.     return array_merge($array_left,array($key),$array_right); 
  20. $myarray=array(1,5,3,4,12,10,8); 
  21. print_r(bubble_sort($myarray)); 
  22. echo "<br/>"
  23. print_r(quick_sort($myarray)); 
  24. echo "<br/>"

三、快速查找值第一次出现的位置,代码如下:

  1. /** 
  2.  * 快速查找值第一次出现的位置 
  3.  * @param array $array          数组 
  4.  * @param string $k             要找的值 
  5.  * @param int $low              查找范围的最小键值 
  6.  * @param int $high             范围的最大键值   
  7.  */ 
  8. function search($array$k$low=0, $high=0) 
  9. {    
  10.  //判断是否为第一次调用   
  11.     if(count($array)!=0 and $high == 0){ 
  12.         $high = count($array);   
  13.     } 
  14.     //如果还存在剩余的数组元素 
  15.     if($low <= $high){ 
  16.      //取$low和$high的中间值 
  17.         $mid = intval(($low+$high)/2); 
  18.         //如果找到则返回 
  19.         if ($array[$mid] == $k){ 
  20.             return $mid
  21.         } 
  22.         //如果没有找到,则继续查找 
  23.         elseif ($k < $array[$mid]){ 
  24.             return search($array$k$low$mid-1); 
  25.         } 
  26.         else { 
  27.             return search($array$k$mid+1, $high); 
  28.         } 
  29.     } 
  30.     return -1; 
  31. $array = array(4,5,7,8,9,10,8);                  //测试search函数 
  32. echo search($array, 8);                          //调用search函数并输出查找结果 

四、去掉二维数组重复项,代码如下:

  1. /** 
  2.      * 去掉二维数组中的重复项 
  3.      * @param $array2D          数组 
  4.      * @param $keyArray         还原时字段对应的key 
  5.      * @return array            去掉了重复项的数组 
  6.      */ 
  7.     public function array_unique_fb($array2D,$keyArray){ 
  8.         $temp=array(); 
  9.         foreach ($array2D as $v){ 
  10.             $v = join(",",$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 
  11.             $temp[] = $v
  12.         } 
  13.         $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组 
  14.         foreach ($temp as $k => $v){ 
  15.             //$temp[$k] = explode(",",$v);   //再将拆开的数组重新组装 
  16.            $temp[$k]= array_combine($keyArray ,explode(",",trim($v))); 
  17.         } 
  18.         return $temp
  19.     } 
  20.  
  21.  
  22.  
  23. $testArray=array_unique_fb(array(array('a'=>1,'b'=>2,'c'=>3), 
  24.     array('a'=>1,'b'=>2,'c'=>3),array('a'=>1,'b'=>2,'c'=>3)),array('a','b','c'')); 
  25.  
  26. print_r($testArray); 

Tags: php冒泡排序 php快速排序

分享到: