溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

冒泡排序和快速排序(部分函數排序)

發(fā)布時間:2020-09-05 00:56:29 來源:網絡 閱讀:250 作者:NianShuZhi 欄目:開發(fā)技術

冒泡排序:

     1. 算法慢,不需要額外空間

     2. 示例代碼:

$arr = [1,3,5,4,2,6,8,5,4,9,0];
function bubbleSort($arr){
    //數組長度 -- 決定循環(huán)的次數(長度-1次循環(huán))
    $arrLength = count($arr);
    for ($i=0; $i < $arrLength-1 ; $i++){
        for($j=1; $j< $arrLength-1; $j++){
            if ($arr[$j]>$arr[$j+1]) {
                $tmp = $arr[$j];
                $arr[$j] = $arr[$j+1];
                $arr[$j+1] = $tmp;
            }
        }
    }
    return $arr;
}
print_r(bubbleSort($arr));


快速排序:

     1. 最高效,需要很大的空間

     2. 示例代碼:

$arr = [1,3,5];
function quickSort($arr){
    $arrLength = count($arr);
    if ($arrLength<=1) {
        return $arr;
    }
    $baseVal = $arr[0];
    $leftArr = [];
    $rightArr = [];
     
    //因為第一個已被取出,所以從第二個開始 -- i=1
    for($i=1; $i<$arrLength; $i++){
        if ($baseVal > $arr[$i]) {
            $leftArr[] = $arr[$i];
        }
        else{
            $rightArr[] = $arr[$i];
        }
    }
    $leftArr = quickSort($leftArr);
    $rightArr = quickSort($rightArr);
    return array_merge($leftArr,array($baseVal),$rightArr);
}
print_r(quickSort($arr));


函數排序:

     sort();

          1. 對數組進行排序;函數結束時,數組單元將被小到大排序,大寫在前

          2. 示例代碼:

$fruits = ["lemon", "orange", "Lemon", "banana", "apple"];
sort ($fruits);
$arr = [];
foreach ($fruits as $key => $value) {
    $arr[$key] = $value;
}
print_r($arr);


     ksort();

          1. 主要用于關聯(lián)數組;對數組按照鍵名排序,保留鍵名到數據的關聯(lián)

          2. 示例代碼:    

$fruits  = [
           "d" => "lemon",
           "a" => "orange",
           "b" => "banana",
           "c" => "apple",
        ];
ksort ($fruits);
$arr = [];
foreach ($fruits as $key => $val) {
    $arr[$key] = $val;
}
print_r($arr);


     usort();

          1. 使用用戶自定義的比較函數對數組中的值進行排序,刪除原有鍵名

          2. 示例代碼:

function  mySort($a, $b)
{
    if($a == $b){
        return  0;
    }
    //根據返回值1或是-1進行排序;
    //-1:1為小到大; 1:-1為大到小
    return ($a < $b)? 1 : -1;
}
$a = [3, 2, 5, 6, 1];
usort($a, "mySort");
$arr = [];
foreach ($a as $key => $value){
    $arr[$key] = $value;
}
print_r($arr);


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI