Maison  >  Article  >  développement back-end  >  Tri à bulles PHP, tri rapide, recherche rapide, déduplication de tableaux bidimensionnels

Tri à bulles PHP, tri rapide, recherche rapide, déduplication de tableaux bidimensionnels

不言
不言original
2018-04-03 17:41:151749parcourir

Le contenu partagé dans cet article est le code pour le tri à bulles, le tri rapide, la recherche rapide et la déduplication de tableaux bidimensionnels en php. Les amis intéressés peuvent y jeter un œil

1 , Tri à bulles

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

2. Tri rapide

//快排
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] < $key ){
            $array_left[]=$array[$i];
        }else{
            $array_right[]=$array[$i];
        }
    }
    $array_left=quick_sort($array_left);
    $array_right=quick_sort($array_right);
    return array_merge($array_left,array($key),$array_right);
}
$myarray=array(1,5,3,4,12,10,8);
print_r(bubble_sort($myarray));
echo "<br/>";
print_r(quick_sort($myarray));
echo "<br/>";


3. Tri rapide Trouver la position où la valeur apparaît pour la première fois

/**
 * 快速查找值第一次出现的位置
 * @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]){
            return search($array, $k, $low, $mid-1);
        }
        else {
            return search($array, $k, $mid+1, $high);
        }
    }
    return -1;
}
$array = array(4,5,7,8,9,10,8);                  //测试search函数 
echo search($array, 8);                          //调用search函数并输出查找结果

4. Supprimez les doublons du tableau bidimensionnel

/**
     * 去掉二维数组中的重复项
     * @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(&#39;a&#39;=>1,&#39;b&#39;=>2,&#39;c&#39;=>3),
    array(&#39;a&#39;=>1,&#39;b&#39;=>2,&#39;c&#39;=>3),array(&#39;a&#39;=>1,&#39;b&#39;=>2,&#39;c&#39;=>3)),array(&#39;a&#39;,&#39;b&#39;,&#39;c&#39;&#39;));

print_r($testArray);

Recommandations associées :

Explication de base du tri à bulles php

Méthode de tri rapide php

Déduplication de tableau php (unidimensionnelle, bidimensionnelle tableau dimensionnel Exemple simple de déduplication

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn