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 相关文章推荐
一个目录遍历函数
Oct 09 PHP
PHP学习笔记之二 php入门知识
Jan 12 PHP
php函数array_merge用法一例(合并同类数组)
Feb 03 PHP
php版本的cron定时任务执行器使用实例
Aug 19 PHP
php检查日期函数checkdate用法实例
Mar 19 PHP
Mac环境下php操作mysql数据库的方法分享
May 11 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
Jun 02 PHP
php 字符串中是否包含指定字符串的多种方法
Apr 12 PHP
详解Laravel5.6 Passport实现Api接口认证
Jul 27 PHP
PHP xpath()函数讲解
Feb 11 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
Jan 23 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
ThinkPHP表单自动验证实例
2014/10/13 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
2015/04/03 PHP
thinkphp隐藏index.php/home并允许访问其他模块的实现方法
2016/10/13 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
javascript全局变量封装模块实现代码
2012/11/28 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
Extjs根据条件设置表格某行背景色示例
2014/07/23 Javascript
利用JQuery写一个简单的异步分页插件
2016/03/07 Javascript
分享JS数组求和与求最大值的方法
2016/08/11 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
webpack分离css单独打包的方法
2018/06/12 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
vue-cli脚手架的.babelrc文件用法说明
2020/09/11 Javascript
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
详解python如何在django中为用户模型添加自定义权限
2018/10/15 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
拓展培训心得体会
2014/01/04 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
父母对孩子的寄语
2014/04/09 职场文书
美术指导助理求职信
2014/04/20 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
反对邪教标语
2014/06/30 职场文书
信用卡催款律师函
2015/05/27 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
MySQL基础(一)
2021/04/05 MySQL
详解Python类和对象内容
2021/06/22 Python