• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

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

PHP admin 12个月前 (06-08) 3次浏览 未收录 0个评论

一、冒泡排序

//冒泡排序
function bubble_sort($array)
{
    $count=count($array);
    if($count <= 0){="" return="" false;="" }="" for($i="0;$i<$count;$i++){" for($j="0;$j $array[$j+1] ){
                $temp=$array[$j];
                $array[$j]=$array[$j+1];
                $array[$j+1]=$temp;
            }
        }
    }
    return $array;
}

二、快速排序

//快排
function quick_sort($array)
{
    $count=count($array);
    if($count <= 1){="" return="" $array;="" }="" $key="$array[0];" $array_left="array();" $array_right="array();" for($i="1;$i<$count;$i++){" if($array[$i]="" <="" ){="" $array_left[]="$array[$i];" }else{="" $array_right[]="$array[$i];" array_merge($array_left,array($key),$array_right);="" $myarray="array(1,5,3,4,12,10,8);" print_r(bubble_sort($myarray));="" echo="" "
"; print_r(quick_sort($myarray)); echo "
";

三、快速查找值第一次出现的位置

/**
 * 快速查找值第一次出现的位置
 * @param array $array          数组
 * @param string $k             要找的值
 * @param int $low              查找范围的最小键值
 * @param int $high             范围的最大键值   
 */
function search($array, $k, $low=0, $high=0)
{    
 //判断是否为第一次调用   
    if(count($array)!=0 and $high == 0){
        $high = count($array);   
    }
    //如果还存在剩余的数组元素
    if($low <= $high){="" 取$low和$high的中间值="" $mid="intval(($low+$high)/2);" 如果找到则返回="" if="" ($array[$mid]="=" $k){="" return="" $mid;="" }="" 如果没有找到,则继续查找="" elseif="" ($k="" <="" $array[$mid]){="" search($array,="" $k,="" $low,="" $mid-1);="" else="" {="" $mid+1,="" $high);="" -1;="" $array="array(4,5,7,8,9,10,8);" 测试search函数="" echo="" 8);="" 调用search函数并输出查找结果

四、去掉二维数组重复项

/**
     * 去掉二维数组中的重复项
     * @param $array2D          数组
     * @param $keyArray         还原时字段对应的key
     * @return array            去掉了重复项的数组
     */
    public function array_unique_fb($array2D,$keyArray){
        $temp=array();
        foreach ($array2D as $v){
            $v = join(",",$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
            $temp[] = $v;
        }
        $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组
        foreach ($temp as $k => $v){
            //$temp[$k] = explode(",",$v);   //再将拆开的数组重新组装
           $temp[$k]= array_combine($keyArray ,explode(",",trim($v)));
        }
        return $temp;
    }
 
$testArray=array_unique_fb(array(array('a'=>1,'b'=>2,'c'=>3),
    array('a'=>1,'b'=>2,'c'=>3),array('a'=>1,'b'=>2,'c'=>3)),array('a','b','c''));
print_r($testArray);

更多php冒泡排序、快速排序、快速查找、二维数组去重实例分享相关文章请关注PHP中文网!


39MO , 版权所有丨如未注明 , 均为原创丨转载请注明原文链接:php冒泡排序、快速排序、快速查找、二维数组去重实例分享
喜欢 (0)
[1353713598@qq.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址