php 经典算法
来源:互联网 发布:太阳能发电 知乎 编辑:程序博客网 时间:2024/05/17 22:32
1,冒泡排序
$array = array(1,4,22,54,23,24,4,123,1,33); $num = count($array); for ($i=0;$i<$num;$i++){ for ($j=0;$j<$num-1;$j++){ if($array[$i] > $array[$j]){ // 降序 升序只需要把条件改为 $array[$i] < $array[$j]即可 $tmp = $array[$i]; $array[$i] = $array[$j]; $array[$j] = $tmp; } } } print_r($array);exit;
其实原理很简单,就是两个循环,执行顺序相当于 $num 的 $num-1次方,在循环里面排序,如果当前数字小于前一个数字,那么把数组重新赋值即可
2,在一组数中,要求插入一个数,按其原来顺序插入,维护原来排序方式。(这种情况试用与升序或者降序的排序,就是找到数值最近的值,然后赋值,并把当前数组的后面的键名+1)
$in = 2;$arr = array(1,1,1,3,5,7);$n = count($arr);//如果要插入的数已经最大,直接打印if($arr[$n-1] < $in) { $arr[$n+1] = $in; print_r($arr); } $check = 0;//只需要保证添加一次即可for($i=0; $i<$n; $i++) {//找出要插入的位置 if($arr[$i] >= $in && $ckeck == 0){ $t1= $arr[$i]; $arr[$i] = $in;//把后面的数据后移一位 for($j=$i+1; $j<$n+1; $j++) { $t2 = $arr[$j]; $arr[$j] = $t1; $t1 = $t2; } $ckeck = 1; }}//打印print_r($arr);die;
3, 在一个数组查找你所需元素(二分查找算法)。原理就是把一个数组从中间区分,然后递归调用自己就可以了
function find($array, $low, $high, $k){ if ($low <= $high){ $mid = intval(($low+$high)/2); if ($array[$mid] == $k){ return $mid; }elseif ($k < $array[$mid]){ return find($array, $low, $mid-1, $k); }else{ return find($array, $mid+1, $high, $k); } } die('Not have...'); } //test $array = array(2,4,3,5); $n = count($array); $r = find($array,0,$n,5)
阅读全文
0 0
- php经典算法总结
- PHP经典算法
- php经典算法
- php经典算法
- php 经典算法
- php经典算法
- php经典算法
- PHP经典算法过桥。
- PHP经典算法九九乘法表
- php经典算法
- PHP经典算法收藏
- php经典算法
- PHP实现经典算法
- php 各种经典算法
- PHP经典算法题
- php经典算法
- PHP经典算法题
- php经典算法
- package.json文件
- Nginx安装的前期准备工作
- 好老师
- storm如何集成kafka
- 原生H5调用摄像头
- php 经典算法
- 用sysbench压测MySQL,通过orzdba监控MySQL
- list
- arcgis for iOS10.2.5 地图加载
- mysql的timezone问题
- Android中fragment构造函数使用所报的一些错Avoid non-default constructors in fragments
- 初入职场的小白
- 排序算法:插入排序
- Selenium2+Python2.0自动化测试【5】 鼠标事件