冒泡排序:依次比较数组中相邻的两个元素,如果两个元素是正序的话不用动,如果两个元素是次序的话调换两个元素的位置,直到这个数组排序完成即可。
真实例子:
首先要有一个数组:
$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);