1. 程式人生 > >php演算法之 快速排序

php演算法之 快速排序

<?php

//快速排序

function quicksort($arr)
{
   //結束條件
   //判斷當前陣列是否需要排序
    if(count($arr)<=1){
        return $arr;
    }

    $num = $arr[0]; //進行排序 定義標尺

    $left_array = []; //左邊陣列
    $right_array = [];//右邊陣列
    for($i = 1;$i<count($arr);$i++){
        
        if($num>$arr[$i]){

            $left_array[] = $arr[$i];//比當前數小放到左邊陣列

        }
        else
        {

            $right_array[] = $arr[$i];//比當前數大放到右邊陣列
        }
          
    }
    //遞迴 呼叫自身
     $left_array = quicksort($left_array);
     $reght_array = quicksort($right_array);
    //合併陣列 返回排序好的陣列
    return array_merge($left_array,array($num),$reght_array);
}
//需要排序的陣列
$arr = array(2,3,5,6,9,8,4,1);

//呼叫遞迴
print_r(quicksort($arr));