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语法(3)
Oct 09 PHP
PHP配置心得包含MYSQL5乱码解决
Nov 20 PHP
php 动态添加记录
Mar 10 PHP
php面向对象全攻略 (四)构造方法与析构方法
Sep 30 PHP
PHP面向对象分析设计的61条军规小结
Jul 17 PHP
PHP实现多条件查询实例代码
Jul 17 PHP
php实现单链表的实例代码
Mar 22 PHP
php中将一段数据存到一个txt文件中并显示其内容
Aug 15 PHP
php实现无限级分类(递归方法)
Aug 06 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
Oct 25 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
Oct 11 PHP
基于ThinkPHP删除目录及目录文件函数
Oct 28 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
30个php操作redis常用方法代码例子
2014/07/05 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
PHP数组实例详解
2016/06/26 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
JavaScript驾驭网页-CSS与DOM
2016/03/24 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
判断js数据类型的函数实例详解
2019/05/23 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
[03:58]2014DOTA2国际邀请赛 龙宝赛后解密DK获胜之道
2014/07/14 DOTA
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
Python实现的几个常用排序算法实例
2014/06/16 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
python 普通克里金(Kriging)法的实现
2019/12/19 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
python圣诞树编写实例详解
2020/02/13 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
css3实现动画的三种方式
2020/08/24 HTML / CSS
HTML5为输入框添加语音输入功能的实现方法
2017/02/06 HTML / CSS
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
英国顶尖手表珠宝品牌独家授权经销商:HS Johnson
2020/10/28 全球购物
Internet体系结构
2014/12/21 面试题
护理自我鉴定范文
2013/10/06 职场文书
领导干部整治奢华浪费之风思想汇报
2014/10/07 职场文书
小学科学教学计划
2015/01/21 职场文书
2015年普法依法治理工作总结
2015/05/26 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
初中历史教学反思
2016/02/19 职场文书