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 json_encode奇怪问题说明
Sep 27 PHP
关于IIS php调用com组件的权限问题
Jan 11 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
如何修改和添加Apache的默认站点目录
Jul 05 PHP
php动态生成函数示例
Mar 21 PHP
php使用codebase生成随机数
Mar 25 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
Jan 08 PHP
PHP 中提示undefined index如何解决(多种方法)
Mar 16 PHP
Yii遍历行下每列数据的方法
Oct 17 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
详解Laravel设置多态关系模型别名的方式
Oct 17 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
Oct 21 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下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
php中计算程序运行时间的类代码
2012/11/03 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
做网页的一些技巧(续)
2007/02/01 Javascript
Javascript中的数学函数
2007/04/04 Javascript
日期 时间js控件
2009/05/07 Javascript
JS实现div内部的文字或图片自动循环滚动代码
2013/04/19 Javascript
jQuery toggle 代替方法
2016/03/22 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
js中的 || 与 &amp;&amp; 运算符详解
2018/05/24 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
Python实现的多线程http压力测试代码
2017/02/08 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
django foreignkey(外键)的实现
2019/07/29 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
基于Python实现全自动下载抖音视频
2020/11/06 Python
利用Python发送邮件或发带附件的邮件
2020/11/12 Python
在Pycharm中安装Pandas库方法(简单易懂)
2021/02/20 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
用CSS3的box-reflect设置文字倒影效果的方法讲解
2016/03/07 HTML / CSS
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
基于Python 函数和方法的区别说明
2021/03/24 Python
小学语文教学反思
2014/02/10 职场文书
赡养老人协议书
2014/04/21 职场文书
多媒体编辑专业毕业生求职信
2014/06/13 职场文书
教师群众路线心得体会
2014/11/04 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
2015年医院创卫工作总结
2015/04/22 职场文书
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript