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 和 XML: 使用expat函数(二)
Oct 09 PHP
Ajax+PHP 边学边练 之二 实例
Nov 24 PHP
在PHP中检查PHP文件是否有语法错误的方法
Dec 23 PHP
linux系统上支持php的 iconv()函数的方法
Oct 01 PHP
那些年一起学习的PHP(二)
Mar 21 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
Jun 06 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
May 28 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
Feb 02 PHP
php微信公众平台示例代码分析(二)
Dec 06 PHP
阿里云PHP SMS短信服务验证码发送方法
Jul 11 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 PHP
PHP设计模式之适配器模式原理与用法分析
Apr 25 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
discuz的php防止sql注入函数
2011/01/17 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
eclipse php wamp配置教程
2016/06/30 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
js中indexof的用法详细解析
2013/12/24 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
Javascript 按位左移运算符使用介绍(
2014/02/04 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
DOM事件探秘篇
2017/02/15 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
2017/07/10 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
vue数据初始化initState的实例详解
2019/04/11 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
Jquery使用each函数实现遍历及数组处理
2020/07/14 jQuery
如何利用node转发请求详解
2020/09/17 Javascript
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
PyQt5实现画布小程序
2020/05/30 Python
Python自带的IDE在哪里
2020/07/01 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
玩具反斗城天猫官方旗舰店:享誉全球的玩具店
2017/10/10 全球购物
员工薪酬福利制度
2014/01/17 职场文书
批评与自我批评材料
2014/02/15 职场文书
二人合伙经营协议书
2014/09/13 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
Python破解极验滑动验证码详细步骤
2021/05/21 Python
TypeScript 内置高级类型编程示例
2022/09/23 Javascript