//冒泡算法:
$arr = array(12,43,23,3253,54356,6334234,1234,1);
$count = count($arr);
//实现思路 双重循环完成,外层控制轮数,当前的最小值。内层 控制的比较次数
for($i=1;$i<$count;$i++){
//每次找到的都是数组中最大的数
for($k=0;$k<$count-$i;$k++){
if($arr[$k] >$arr[$k+1] ){
$huan = $arr[$k+1];
$arr[$k+1]=$arr[$k];
$arr[$k]=$huan;
}
}
}
print_r($arr);
//快速排序
//原理 :任意取数组中的一个数作为定值
//依靠定值去判断
// 如果是比它小的 放到 一个数组
// 比它大的 放到 一个数组
// 新的数组生成以后;将再次调用本方法
// 最后 将 两个数组合并返回
$arr=array(6,3,8,6,4,2,9,5,1);
function quitkSort($arr){
if(count($arr) <1 ){
return $arr;
}
$ding = $arr[0];
$len = count($arr);
$left = [];
$right = [];
for($i=1;$i<$len ;$i++){
if( $arr[$i] < $ding ){
$left[]= $arr[$i];
}else{
$right[]=$arr[$i];
}
}
$left = quitkSort($left);
$right = quitkSort($right);
return array_merge($left,[$ding],$right);
}
$data = quitkSort($arr);
print_r($data);
//插入排序
$arr=array(6,3,8,6,4,2,9,5,1);
$len = count($arr);
for($i=1;$i<$len;$i++){
//相对于第二个循环的当前数 此时的
// $arr[$i] 是 第二个循环的当前的数的后一个数
$tmp = $arr[$i];
for($k=$i-1;$k>= 0 ;$k--){
if($tmp<$arr[$k]){
//将当前数的后一个 变成 当前数
$arr[$k+1]=$arr[$k];
//将当前数 变成 比较的那个数
$arr[$k]=$tmp;
}
}
}
print_r($arr);