• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++中求旋转数组中的最小数字(经典面试题)

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

作者:cm_cyj_1116 字体:[增加 减小] 来源:互联网 时间:2017-05-28

cm_cyj_1116 通过本文主要向大家介绍了c++动态二维数组,c++数组教程,c++ 数组做函数参数,c++输出数组函数,c++数组等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

题目:把一个数组的最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增数组的旋转,输出旋转数组的最小元素。例如数组{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]; 
} 
</div>

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; 
} 
</div>

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++二维数组中的查找算法示例
  • C++中求旋转数组中的最小数字(经典面试题)
  • C与C++动态分配二维数组的实现方法
  • C++实现将数组中的值反转
  • C++实现当前时间动态显示的方法
  • C++ 动态创建按钮及 按钮的消息响应
  • C++动态规划之最长公子序列实例
  • C++动态规划之背包问题解决方法
  • C++实现旋转数组的二分查找
  • C++对数组的引用实例分析

相关文章

  • 2017-05-28浅谈C++日志系统log4cxx的使用小结详解
  • 2017-05-28c语言中if 语句的作用范围示例代码
  • 2017-05-28深入理解C语言 static、extern与指针函数
  • 2017-05-28C++二分法在数组中查找关键字的方法
  • 2017-05-28如何在C++中建立一个顺序表
  • 2017-05-28OpenCV 2.4.3 C++ 平滑处理分析
  • 2017-05-28基于欧几里德算法的使用
  • 2017-05-28获取一个文件行数的方法
  • 2017-05-28C++中string与int的相互转换实现代码
  • 2017-05-28解决不用sizeof求出int大小的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 用while判断输入的数字是否回文数的简单实现
    • C++键盘记录程序代码
    • 深入分析C++中deque的使用
    • 用贪心法求解背包问题的解决方法
    • 简单分析C语言中指针数组与数组指针的区别
    • VC++角色游戏中的人物初始化模块代码实例
    • C++制作俄罗斯方块
    • 一个win32窗口创建示例
    • C++11新特性之智能指针(shared_ptr/unique_ptr/weak_ptr)
    • 使用opencv把图片拼接成视频

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有