文档章节

php冒泡排序跟二分算法

tree2013
 tree2013
发布于 2016/04/18 12:48
字数 361
阅读 50
收藏 3

PHP冒泡排序

$a=array('3','8','1','4','11','7');
print_r($a);
$len = count($a);
//从小到大
for($i=1;$i<$len;$i++) {
    for ($j = $len - 1; $j >= $i; $j--) {
        if ($a[$j] < $a[$j - 1]) {//如果是从大到小的话,只要在这里的判断改成if($b[$j]>$b[$j-1])就可以了
            $x = $a[$j];
            $a[$j] = $a[$j - 1];
            $a[$j - 1] = $x;
        }
    }
}
print_r($a);
exit;

$i=1,子循环运行$j=5,$j=4,$j=3,$j=2,$=1;第一次查找将这个数组中最小的放到第一位去

$=2,资讯还运行$j=5,$j=4;$j=3;$j=2;第二次查找这个数组中次小的放到第二去

如此循环就实现了排列,这就是冒泡排序

php二分算法

二分算法是为了实现查找某个元素在一个数组中的索引值,将数组一分为2,逐步缩小范围,最终查找到,前提是数组必须排列好。

public function search($arr,$searchval){
    $top=count($arr)-1;
    $low=0;
    while($low<=$top){
        $mid=floor(($top+$low)/2);//取整进一
        if($arr[$mid]==$searchval){
            return $mid;
        }
        elseif($arr[$mid]>$searchval){
            //如果说中间的值比搜索的值大,证明我们要到前半部分去搜索,因此top为中间的-1
            $top=$mid-1;
        }
        else{
            //如果说中间的值比搜索的值小,证明我们要到后半部分去搜索,因此low为中间的+1
            $low=$mid+1;
        }
    }
    return -1;//未查找到
}
$arr=array(1,2,3,5,9,41,50);
var_dump($this->search($arr,41));
exit;


© 著作权归作者所有

共有 人打赏支持
tree2013
粉丝 27
博文 194
码字总数 62280
作品 0
武汉
后端工程师
私信 提问
一份不错的php面试题(附答案)

一份不错的php面试题,附答案,有准备换工作的同学可以参考一下. 一、基础题 1. 写出如下程序的输出结果 <?php $str1 = null; $str2 = false; echo $str1==$str2 ? '相等' : '不相等'; $str3 ...

斑驳
2014/08/17
0
4
PHPer面试指南-算法篇

本书的 GitHub 地址:https://github.com/todayqq/PHPerInterviewGuide 算法可以说是大厂的必考题,对于算法,一定要理解其中的精髓、原理。 冒泡排序 冒泡排序的原理:一组数据,比较相邻数...

angkee
01/24
0
0
数据结构之冒泡排序,递归,二分法

一丶冒泡排序:   1.概念:     顾名思义,冒泡排序方式就跟气泡一样,一层一层的往上冒,气泡越大数值越小,当遇到比自己小的气泡,就升到此气泡上面,逐渐比较.   2.算法原理:     冒泡...

七寸丶
08/15
0
0
PHP实现各种经典算法

二分查找(数组里查找某个元素) 顺序查找(数组里查找某个元素) 线性表的删除(数组中实现) 冒泡排序(数组排序) 快速排序(数组排序) 字符串长度 截取子串 字符串翻转 字符串比较 查找...

zhiqiangw
2016/12/07
18
0
PHP常见的算法

1:快速排序 <?php function quick_sort($array) { if(count($array) <= 1) { return $array; } $left_arr = array(); $right_arr = array(); $key = $array[0];......

雨醉风尘
2016/02/29
31
0

没有更多内容

加载失败,请刷新页面

加载更多

ConcurrentHashMap源码解析

初始化 先看看ConcurrentHashMap中几个重要的属性: // 初始化容量大小static final int DEFAULT_INITIAL_CAPACITY = 16;//默认负载因子static final float DEFAULT_LOAD_FACTOR = 0.75f...

grace_233
13分钟前
0
0
java对象的浅拷贝和深拷贝

浅拷贝 java的数据类型有基本数据类型(如:int、long等)和引用数据类型。例如:对象1中有属性a(基本数据类型)和属性b(引用数据类型),在进行浅拷贝到对象2时,属性a复制属性的值给对象...

yangyangyyyy
13分钟前
0
0
SQLServer AlwaysOn在阿里云的前世今生

缘起 早在2015年的时候,随着阿里云业务突飞猛进的发展,SQLServer业务也积累了大批忠实客户,其中一些体量较大的客户在类似大促的业务高峰时RDS的单机规格(规格是按照 内存CPUIOPS 一定比例...

阿里云云栖社区
14分钟前
0
0
ubuntu16.04 LNMP搭建 php7.1

sudo apt-get update sudo apt-get install mysql-server mysql-client sudo apt-add-repository ppa:ondrej/php sudo apt-get update sudo apt-get install php7.1 php7.1-fpm php7.1-cgi p......

一千零一夜个为什么
21分钟前
0
0
阿里云高级技术专家带你全面了解云主机性能评测

钱超,花名西邪,阿里云高级技术专家,超12年老阿里,是云主机性能领域的知名专家。 在目前的云计算测评领域,很多性能测评存在营销的包装,容易引起误导:比如用瞬时性能引导读者得出结论,...

阿里云官方博客
28分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部