php实现有序数组旋转后寻找最小值方法


Posted in PHP onSeptember 27, 2018

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。

NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

1、利用二分法寻找数组中的最小元素

2、定义两个 指针left和right,指向数组的第一个元素和最后一个元素,定义一个中间指针mid

3、如果arr[left]小于arr[mid],那么把左边指针移动到mid处,mid从新计算 4.如果arr[left]大于arr[mid],那么把右边指针移动到mid处,mid从新计算,缩小范围

left=0 right=arr.length-1
while arr[left]>=arr[right]
  if right-left==1
    mid=right
    break
  mid=left+(right-left)/2
  if arr[left]<=arr[mid]
    left=mid
  else
    right=mid
return arr[mid]
<?php
$arr=array(3,4,5,6,1,2);
function minNumberInRotateArray($rotateArray){
    $left=0;//左边指针
    $right=count($rotateArray)-1;//右边指针
    //判断条件,left大于right就一直进行
    while($rotateArray[$left]>=$rotateArray[$right]){
        //left和right已经紧挨着了
        if(($right-$left)==1){
            $mid=$right;
            break;
        }  
        //中间点
        $mid=ceil($left+($right-$left)/2);
        //left小于中间点
        if($rotateArray[$left]<$rotateArray[$mid]){
            //left移动到中间点
            $left=$mid;
        }else{
            //right移动到中间点
            $right=$mid;
        }  
    }  
   
    return $rotateArray[$mid];
}
$min=minNumberInRotateArray($arr);
var_dump($min);//int(1)

以上就是php如何实现有序数组旋转后寻找最小值(代码)的详细内容,感谢大家对三水点靠木的支持。

PHP 相关文章推荐
收集的php编写大型网站问题集
Mar 06 PHP
PHP+MYSQL 出现乱码的解决方法
Aug 08 PHP
PHP Socket 编程
Apr 09 PHP
基于PHP Web开发MVC框架的Smarty使用说明
Apr 19 PHP
PHP CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
Jun 06 PHP
PHP中的按位与和按位或操作示例
Jan 27 PHP
Linux下PHP安装mcrypt扩展模块笔记
Sep 10 PHP
php时间计算相关问题小结
May 09 PHP
使用php完成常见的文件上传功能(推荐)
Jan 13 PHP
ThinkPHP框架表单验证操作方法
Jul 19 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
Aug 31 PHP
PHP接入支付宝接口失效流程详解
Nov 10 PHP
PHP实现SMTP邮件的发送实例
Sep 27 #PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
Sep 26 #PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
Sep 26 #PHP
多个Laravel项目如何共用migrations详解
Sep 25 #PHP
php中上传文件的的解决方案
Sep 25 #PHP
PHP调用微博接口实现微博登录的方法示例
Sep 22 #PHP
PHP如何搭建百度Ueditor富文本编辑器
Sep 21 #PHP
You might like
c#中的实现php中的preg_replace
2009/12/21 PHP
使用PHP导出Redis数据到另一个Redis中的代码
2014/03/12 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
php数据序列化测试实例详解
2017/08/12 PHP
js局部刷新页面时间具体实现
2013/07/04 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
2014/05/22 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
js数组去重的5种算法实现
2015/11/04 Javascript
学习Angular中作用域需要注意的坑
2016/08/17 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
javaScript基础详解
2017/01/19 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
2017/09/01 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
2020/04/11 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
俄罗斯皮肤健康中心:Pharmacosmetica.ru
2020/02/22 全球购物
留学自荐信的技巧
2013/10/17 职场文书
主持人婚宴答谢词
2014/01/28 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
分家协议书
2014/04/21 职场文书
2014年感恩母亲演讲稿
2014/05/27 职场文书
师范大学生求职信
2014/06/13 职场文书
出差报告范文
2014/11/06 职场文书
采购员岗位职责
2015/02/03 职场文书
单位实习介绍信
2015/05/05 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
详解CSS玩转图片Base64编码
2021/05/25 HTML / CSS
Django中session进行权限管理的使用
2021/07/09 Python