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查询域名状态whois的类
Nov 25 PHP
PHP读取数据库并按照中文名称进行排序实现代码
Jan 29 PHP
fetchAll()与mysql_fetch_array()的区别详解
Jun 05 PHP
解析使用ThinkPHP应该掌握的调试手段
Jun 20 PHP
php函数实现判断是否移动端访问
Mar 03 PHP
PHP实现在线阅读PDF文件的方法
Jun 17 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
Oct 19 PHP
PHP连接MYSQL数据库的3种常用方法
Feb 27 PHP
PHP设计模式之工厂模式实例总结
Sep 01 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
PHP实现微信退款功能
Oct 02 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
PHP中header和session_start前不能有输出原因分析
2013/01/11 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
2016/03/21 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
页面只有一个text的时候,回车自动submit的解决方法
2010/08/12 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
JQuery操作tr和td内容的方法实例
2013/03/06 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
微信小程序入门之广告条实现方法示例
2018/12/05 Javascript
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
Windows环境下python环境安装使用图文教程
2018/03/13 Python
Python如何自动获取目标网站最新通知
2020/06/18 Python
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
Arti-shopping中文官网:大型海外商品一站式直邮平台
2020/03/23 全球购物
应届大学生求职的自我评价
2013/11/17 职场文书
实习生自荐信范文分享
2013/11/27 职场文书
图书室管理制度
2014/01/19 职场文书
学前班评语大全
2014/05/04 职场文书
倡议书的写法
2014/08/30 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
教师求职自荐信范文
2015/03/04 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
JavaScript的function函数详细介绍
2021/11/20 Javascript
Python实现文字pdf转换图片pdf效果
2022/04/03 Python