deλˣDz > APP

Dz 2019-08-20 APP 106

APP49㷨ʵ

APP49㷨ʵ

1. ð
˼·Ҫde1 Եǰδźde ǰdeνбȽϺ͵ ýϴde³ Сdeð. ÿdeȽϺdeҪ෴ʱ ͽǻ.
ʵ֣

$arr=array(1,43,54,62,21,66,32,78,36,76,39);  
function bubbleSort($arr)
{  
  $len=count($arr);
  //òѭ Ҫðde
  for($i=1;$i<$len;$i++)
  { //òѭÿ ð1 ҪȽde
    for($k=0;$k<$len-$i;$k++)
    {
       if($arr[$k]>$arr[$k+1])
        {
            $tmp=$arr[$k+1];
            $arr[$k+1]=$arr[$k];
            $arr[$k]=$tmp;
        }
    }
  }
  return $arr;
}

2. ѡ
ʵ֣

function selectSort($arr) {
//˫ѭ  ڲƱȽϴ
 $len=count($arr);
    for($i=0; $i<$len-1; $i++) {
        //ȼСdeֵdeλ
        $p = $i;
        
        for($j=$i+1; $j<$len; $j++) {
            //$arr[$p] ˵ǰ֪deСֵ
            if($arr[$p] > $arr[$j]) {
            //Ƚ ָСde,¼Сֵdeλã´αȽʱ֪deСֵбȽ.
                $p = $j;
            }
        }
        //Ѿȷ˵ǰdeСֵdeλ 浽$p.Сֵdeλ뵱ǰdeλ$iͬ λû.
        if($p != $i) {
            $tmp = $arr[$p];
            $arr[$p] = $arr[$i];
            $arr[$i] = $tmp;
        }
    }
    //ս
    return $arr;
}

3.
˼·Ҫde1 ǰdeѾź˳de Ҫѵn嵽ǰde ʹnҲź˳de.˷ѭ ֱȫź˳.
ʵ֣

function insertSort($arr) {
    $len=count($arr); 
    for($i=1, $i<$len; $i++) {
        $tmp = $arr[$i];
        //ڲѭ Ƚϲ
        for($j=$i-1;$j>=0;$j--) {
            if($tmp < $arr[$j]) {
                //ֲdeҪС λ deǰdeػ
                $arr[$j+1] = $arr[$j];
                $arr[$j] = $tmp;
            } else {
                //Ҫƶde Ѿ ǰdeͲҪٴαȽ.
                break;
            }
        }
    }
    return $arr;
}

4. 
˼·ѡ1׼ ͨѡ1ػ1.ͨ1ɨ зֳ 1ֱȻ׼С 1ִڵڻ׼.ʱ׼źdeȷλ Ȼͬdeݹ򻮷de.
ʵ֣

function quickSort($arr) {
    //ж˷Ҫ
    $length = count($arr);
    if($length <= 1) {
        return $arr;
    }
    //ѡ1Ϊ׼
    $base_num = $arr[0];
    //˱deп մСϵ
    //ʼ
    $left_array = array();  //Сڻ׼de
    $right_array = array();  //ڻ׼de
    for($i=1; $i<$length; $i++) {
        if($base_num > $arr[$i]) {
            //
            $left_array[] = $arr[$i];
        } else {
            //ұ
            $right_array[] = $arr[$i];
        }
    }
    //ٷֱߺұdeͬdeʽݹ
    $left_array = quick_sort($left_array);
    $right_array = quick_sort($right_array);
    //ϲ
    return array_merge($left_array, array($base_num), $right_array);
}