php演算法之 快速排序
阿新 • • 發佈:2018-12-22
<?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));
//快速排序
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));