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 相关文章推荐
利用discuz自带通行证整合dedecms的方法以及文件下载
Mar 06 PHP
PHP 身份证号验证函数
May 07 PHP
在字符串指定位置插入一段字符串的php代码
Feb 16 PHP
PHP 数组基础知识小结
Aug 20 PHP
php读取mysql的简单实例
Jan 15 PHP
PhpDocumentor 2安装以及生成API文档的方法
May 21 PHP
PHP中file_get_contents高?用法实例
Sep 24 PHP
php邮箱地址正则表达式验证
Nov 13 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
Dec 10 PHP
PHP正则表达式入门教程(推荐)
May 18 PHP
php传值方式和ajax的验证功能
Mar 27 PHP
PHP实现的curl批量请求操作示例
Jun 06 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下把数组保存为文件格式的实例应用
2010/02/08 PHP
php 保留字列表
2012/10/04 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
PHP7 windows支持
2021/03/09 PHP
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
大家未必知道的Js技巧收藏
2008/04/07 Javascript
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
jQuery Clone Bug解决代码
2010/12/22 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
2013/12/31 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
2015/08/26 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
jQuery 限制输入字符串长度
2016/06/20 Javascript
canvas实现图片根据滑块放大缩小效果
2017/02/24 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
浅谈Vue Element中Select下拉框选取值的问题
2018/03/01 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
2018/12/19 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
Python实现类继承实例
2014/07/04 Python
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
Python匿名函数及应用示例
2019/04/09 Python
使用python实现抓取腾讯视频所有电影的爬虫
2019/04/15 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
python 类之间的参数传递方式
2019/12/20 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
用C#语言写出与SQLSERVER访问时的具体过程
2013/04/16 面试题
修理厂厂长岗位职责
2014/01/30 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
汽车机修工岗位职责
2014/03/06 职场文书