文档章节

php冒泡排序跟二分算法

tree2013
 tree2013
发布于 2016/04/18 12:48
字数 361
阅读 48
收藏 2
点赞 1
评论 0

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
博文 182
码字总数 62280
作品 0
武汉
后端工程师
一份不错的php面试题(附答案)

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

斑驳 ⋅ 2014/08/17 ⋅ 4

PHPer面试指南-算法篇

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

angkee ⋅ 01/24 ⋅ 0

PHP实现各种经典算法

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

zhiqiangw ⋅ 2016/12/07 ⋅ 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 ⋅ 0

java算法篇总结

冒泡排序 比较相邻元素,如果第一个比第二个大,那么交换他们的位置;每对相邻元素进行依次比较,最后的元素应该是最大的。 选择排序 寻找最小值所在索引位置,于i当前起始点进行对调位置 pu...

丛林迷雾 ⋅ 2015/09/07 ⋅ 0

3常用二分查找程序的作业树

《树型软件工程方法》之系列博文3 常用二分查找程序的作业树 TREESOFT 目 录 3 常用二分查找程序的作业树. 1 3.1 问题需求.... 1 3.2 算法设计.... 1 3.3 作业树.... 1 3.4 遍历编程.... 2 ...

Treesoft ⋅ 2012/07/17 ⋅ 0

快速排序——PowerShell版

继续读啊哈磊算法有感系列,继续升华。上一篇是冒泡排序,在结尾总结了一下冒泡排序的缺点——时间复杂度O(N*N)太大。这一篇来说一下快速排序,快速排序可以在多数情况下克服冒泡排序的缺点(...

天外归云 ⋅ 2015/10/03 ⋅ 0

几句话描述简单算法——排序与搜索

一、排序 1)桶排序 准备大量的木桶,用木桶的标号(数组下标)作为数据,按照木桶标号的顺序进行排序。 2)选择排序 从“待排序部分”找到最小值(或最大值),让“待排序部分”的起始位置向...

技术小美 ⋅ 2017/11/19 ⋅ 0

怎么判断那种排序算法和查找算法更适用当前

排序和查找算法那麽多,但是那些方法更好? 那些方法更有优势? 自己应该主要掌握那几张算法 ? 或者自己当前的数据应该怎么排序或者查找? 今天我们来对应一个实际问题来搭配使用排序算法以...

KiTok ⋅ 2017/11/07 ⋅ 0

Java 9种排序算法详解和示例汇总

冒泡排序、选择排序、直接插入排序、二分法排序、希尔排序、快速排序、堆排序、归并排序、基数排序,共9中排序算法详解和代码示例。 示例中全部采用从小到大排序,编码方式为本人理解的思路,...

磊_lei ⋅ 06/02 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

windows profesional 2017 build problem

.net framework .... https://stackoverflow.com/questions/43330915/could-not-load-file-or-assembly-microsoft-build-frameworkvs-2017...

机油战士 ⋅ 43分钟前 ⋅ 0

python3中报错的解决方法(长期更新)

1、ImportError: No module named ‘DjangoUeditor’ 出错原因:安装DjangoUeditor库适用于python2,需要下载适用python3的 下载地址:https://github.com/twz915/DjangoUeditor3 2、python3......

xiaoge2016 ⋅ 48分钟前 ⋅ 0

数据结构与算法之双向链表

一、双向链表 1.双向链表的结点结构 typedef struct DualNode{ ElemType data; struct DualNode *prior; // 前驱结点 struct DualNode *next; // 后继结点}DualNode, *DuL...

aibinxiao ⋅ 今天 ⋅ 0

五大最核心的大数据技术

大数据技术有5个核心部分,数据采集、数据存储、数据清洗、数据挖掘、数据可视化。关于这5个部分,有哪些核心技术?这些技术有哪些潜在价值?看完今天的文章就知道了。 大数据学习群:7165810...

董黎明 ⋅ 今天 ⋅ 0

PhpStorm 头部注释、类注释和函数注释的设置

首先,PhpStorm中文件、类、函数等注释的设置在:setting-》Editor-》FIle and Code Template-》Includes下设置即可,其中方法的默认是这样的: /**${PARAM_DOC}#if (${TYPE_HINT} != "v...

nsns ⋅ 今天 ⋅ 0

spring.net AOP

http://www.springframework.net/doc-latest/reference/html/aop-quickstart.html https://www.cnblogs.com/wujy/archive/2013/04/06/3003120.html...

whoisliang ⋅ 今天 ⋅ 0

【HAVENT原创】创建 Dockerfile 生成新的镜像,并发布到 DockerHub

注意:Win7 与 Win10 的版本存在差异,Win7 版本使用 Docker Quickstart Terminal 进入控制台,Win10下面直接用管理员权限打开控制台或者 PowerShell 即可;另外 Win7 下面只能访问 C盘,/ap...

HAVENT ⋅ 今天 ⋅ 0

pom.xml出现web.xml is missing ...解决方案

提示信息应该能看懂。也就是缺少了web.xml文件,<failOnMissingWebXml>被设置成true了。 搜索了一下,Stack Overflow上的答案解决了问题,分享一下。 目前被顶次数最多的回答原文如下: This...

源哥L ⋅ 今天 ⋅ 0

js时间戳与日期格式之间相互转换

1. 将时间戳转换成日期格式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // 简单的一句代码 var date = new Date(时间戳); //获取一个时间对象 /** 1. 下面是获取时间日期的方法,需要什么样的格式自己...

Jack088 ⋅ 今天 ⋅ 0

web添加log4j

添加xml配置log4j.properties # Global logging configuration---root日志设置#log4j.rootLogger=info,dailyRollingFile,stdoutlog4j.rootLogger=debug,stdout,dailyRollingFile---......

黄柳淞 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部