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 相关文章推荐
一个查看session内容的函数
Oct 09 PHP
教你如何把一篇文章按要求分段
Oct 09 PHP
PHP 柱状图实现代码
Dec 04 PHP
php注销代码(session注销)
May 31 PHP
PHP图片自动裁切应付不同尺寸的显示
Oct 16 PHP
封装ThinkPHP的一个文件上传方法实例
Oct 31 PHP
详解PHP执行定时任务的实现思路
Dec 21 PHP
浅谈PHP Cookie处理函数
Jun 10 PHP
利用php做服务器和web前端的界面进行交互
Oct 31 PHP
ThinkPHP实现图片上传操作的方法详解
May 08 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
Mar 09 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生成txt文件标题及内容的方法
2014/01/16 PHP
Thinkphp中的volist标签用法简介
2014/06/18 PHP
PHP实现加密的几种方式介绍
2015/02/22 PHP
PHP实现通过get方式识别用户发送邮件的方法
2015/07/16 PHP
在WordPress的文章编辑器中设置默认内容的方法
2015/12/29 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
复制本贴标题和地址的js代码
2008/07/01 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
vue.js前后端数据交互之提交数据操作详解
2018/04/24 Javascript
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
在Python中操作文件之seek()方法的使用教程
2015/05/24 Python
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
Pytorch之Variable的用法
2019/12/31 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
HTML5中5个简单实用的API
2014/04/28 HTML / CSS
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
PHP如何去执行一个SQL语句
2016/03/05 面试题
接口可以包含哪些成员
2012/09/30 面试题
网络信息管理员岗位职责
2014/01/05 职场文书
工业设计专业自荐书
2014/06/05 职场文书
新书发布会策划方案
2014/06/09 职场文书
科学发展观活动总结
2014/08/28 职场文书
2015党建工作简报
2015/07/21 职场文书
如何Python使用re模块实现okenizer
2022/04/30 Python