全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C++中求旋转数组中的最小数字(经典面试题)

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

题目:把一个数组的最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增数组的旋转,输出旋转数组的最小元素。例如数组{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小时内与您取得联系。