C++中求旋转数组中的最小数字(经典面试题)
发布时间 - 2026-01-11 00:18:35 点击率:次面试题:旋转数组的最小数字

题目:把一个数组的最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增数组的旋转,输出旋转数组的最小元素。例如数组{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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
如何快速打造个性化非模板自助建站?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
如何利用DOS批处理实现定时关机操作详解
Laravel怎么连接多个数据库_Laravel多数据库连接配置
5种Android数据存储方式汇总
浅谈javascript alert和confirm的美化
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
用v-html解决Vue.js渲染中html标签不被解析的问题
零服务器AI建站解决方案:快速部署与云端平台低成本实践
Laravel如何处理表单验证?(Requests代码示例)
PHP 500报错的快速解决方法
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
LinuxShell函数封装方法_脚本复用设计思路【教程】
linux top下的 minerd 木马清除方法
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
手机网站制作与建设方案,手机网站如何建设?
Swift中循环语句中的转移语句 break 和 continue
如何获取免费开源的自助建站系统源码?
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
Laravel定时任务怎么设置_Laravel Crontab调度器配置
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
Laravel如何处理异常和错误?(Handler示例)
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
android nfc常用标签读取总结
如何制作一个表白网站视频,关于勇敢表白的小标题?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
Android自定义listview布局实现上拉加载下拉刷新功能
简单实现Android文件上传
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
Laravel怎么实现模型属性的自动加密
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
利用 Google AI 进行 YouTube 视频 SEO 描述优化
如何在阿里云服务器自主搭建网站?
如何用AWS免费套餐快速搭建高效网站?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
如何快速配置高效服务器建站软件?
javascript读取文本节点方法小结
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
中国移动官方网站首页入口 中国移动官网网页登录
php 三元运算符实例详细介绍

