1. 程式人生 > >氣泡排序和快速排序的原理

氣泡排序和快速排序的原理

氣泡排序:依次比較陣列中相鄰的兩個元素,如果兩個元素是正序的話不用動,如果兩個元素是次序的話調換兩個元素的位置,直到這個陣列排序完成即可。

真例項子:

首先要有一個數組:

$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);