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

冒泡排序:依次比较数组中相邻的两个元素,如果两个元素是正序的话不用动,如果两个元素是次序的话调换两个元素的位置,直到这个数组排序完成即可。


真实例子:

首先要有一个数组:

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

你可能感兴趣的:(算法练习,冒泡排序,快速排序)