面试题:旋转数组的最小数字

题目:把一个数组的最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增数组的旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.
算法:
(1)当输入的旋转数组非法时:处理!
(2)当输入的旋转数组正常时,index1 = 0;index2=length-1:
a:如果arry[index1] <arry[index2]时:说明数组为原数组,并没有进行旋转;
b:如果arry[index1] >= arry[index2]时,middle = (index1+index2)/2:
b.1如果arry[index1] >arry[middle],index2 = middle;
b.2如果arry[index1] <= arry[middle],index1 = middle;
b.3 如果arry[index1] = arry[middle] = arry[index2],遍历找到最小值。
代码:
Min_RotateArray.hpp
#pragma once
#include<iostream>
using namespace std;
int Min_RotateArray(int arry[],int size)
{
if(arry == NULL || size <= 0)
{cout<<"参数输入错误!!!"<<endl;}
int min = 0;
int index1 = 0;
int index2 = size-1;
int middle = (index1+index2)/2;
if(arry[0] < arry[size-1])
return arry[0];
while(arry[index1] >= arry[index2])
{
if(index2-index1 == 1)
{
min=index2;
break;
}
middle = (index1+index2)/2;
if(arry[index1] <= arry[middle])//arry[middle]还在第一个递增序列中
{
index1 = middle;
}
else
{
if(arry[index1] >= arry[middle])//arry[middle]在第二个递增序列中
{index2 = middle;}
if(arry[index1] == arry[index2] && arry[index1] == arry[middle])
{
for(int i=0;i<size;++i)
{
if(arry[min]>arry[i])
{
min = i;
break;
}
}
}
}
}
return arry[min];
}
Min_RotateArray.cpp
#include"Min_RotateArray.hpp"
int main()
{
int arry[] = {3,4,5,1,2};
int size = sizeof(arry)/sizeof(arry[0]);
int min = Min_RotateArray(arry,size);
cout<<"The min is:"<<min<<endl;
system("pause");
return 0;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# C++中求旋转数组中的最小数字
# 求旋转数组中的最小数字实例代码
# C++实现数组中元素组合出最大值
# C++实现从数组中同时取出最大最小元素算法示例
# 带你了解C++的数组与函数
# c++ 求数组最大最小值函数的实现
# 第一个
# 还在
# 遍历
# 希望能
# 第二个
# 谢谢大家
# 搬到
# 值为
# 若干个
# 称之为
# 最小值
# 面试题
# middle
# lt
# gt
# hpp
# Min_RotateArray
# pre
# strong
# br
相关文章:
西安大型网站制作公司,西安招聘网站最好的是哪个?
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
如何通过虚拟主机快速搭建个人网站?
如何在Windows 2008云服务器安全搭建网站?
高性价比服务器租赁——企业级配置与24小时运维服务
如何零基础开发自助建站系统?完整教程解析
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
XML的“混合内容”是什么 怎么用DTD或XSD定义
如何配置WinSCP新建站点的密钥验证步骤?
制作公司内部网站有哪些,内网如何建网站?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
利用JavaScript实现拖拽改变元素大小
如何选择高效稳定的ISP建站解决方案?
如何确认建站备案号应放置的具体位置?
股票网站制作软件,网上股票怎么开户?
如何确保西部建站助手FTP传输的安全性?
图册素材网站设计制作软件,图册的导出方式有几种?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
内网网站制作软件,内网的网站如何发布到外网?
如何通过PHP快速构建高效问答网站功能?
如何快速搭建二级域名独立网站?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
山东云建站价格为何差异显著?
建站之星导航如何优化提升用户体验?
个人网站制作流程图片大全,个人网站如何注销?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
定制建站哪家更专业可靠?推荐榜单揭晓
宝塔Windows建站如何避免显示默认IIS页面?
相册网站制作软件,图片上的网址怎么复制?
如何通过二级域名建站提升品牌影响力?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
建站之星如何配置系统实现高效建站?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
如何通过西部建站助手安装IIS服务器?
网站图片在线制作软件,怎么在图片上做链接?
如何在宝塔面板中创建新站点?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
浅谈Javascript中的Label语句
如何通过山东自助建站平台快速注册域名?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
网站制作模板下载什么软件,ppt模板免费下载网站?
如何用西部建站助手快速创建专业网站?
如何确保FTP站点访问权限与数据传输安全?
如何用腾讯建站主机快速创建免费网站?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
如何用AWS免费套餐快速搭建高效网站?
建站之星备案流程有哪些注意事项?
*请认真填写需求信息,我们会在24小时内与您取得联系。