php算法

//冒泡算法:

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值