氣泡排序和快速排序的原理
氣泡排序:依次比較陣列中相鄰的兩個元素,如果兩個元素是正序的話不用動,如果兩個元素是次序的話調換兩個元素的位置,直到這個陣列排序完成即可。
真例項子:
首先要有一個數組:
$arr = [1,3,7,5,9,0,4,8,2];
Class Sort
{//冒泡
public function BubbleSort($arr)
{
$len = count($arr);
//控制迴圈的層數
for ($i=1;$i<$len;$i++) {
//控制迴圈的次數
for ($j=0;$j<$len-$i;$j++) {
//判斷
if ($arr[$j]<$arr[$j+1]) {
list($arr[$j],$arr[$j+1]) = [$arr[$j+1],$arr[$j]];
}
}
}
return $arr;
}
//快速
public function QuickSort($arr){
$len = count($arr); //陣列長度
if($len <=1){
return $arr;
}
//首先找出一個標杆
$base = $arr[0];
//定義兩個空陣列
$left = [];
$right = [];
for ($i=1;$i<$len;$i++) {
if ($arr[$i] < $base) {
$left[] = $arr[$i];
} else {
$right[] = $arr[$i];
}
}
$left = $this->QuickSort($left);
$right = $this->QuickSort($right);
$arr = array_merge($left,[$base],$right);
return $arr;
}
}
//然後例項化這個類
$obj = new Sort;
$data = $obj->BubbleSort($arr);
$post = $obj->QuickSort($arr);