国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++中求旋轉數組中的最小數字(經典面試題)

2020-05-23 13:49:06
字體:
來源:轉載
供稿:網友

面試題:旋轉數組的最小數字

題目:把一個數組的最開始的若干個元素搬到數組的末尾,我們稱之為數組的旋轉。輸入一個遞增數組的旋轉,輸出旋轉數組的最小元素。例如數組{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; } 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 荃湾区| 福鼎市| 浙江省| 区。| 成武县| 华坪县| 南木林县| 民乐县| 黎平县| 安化县| 闽清县| 荆门市| 大丰市| 涞源县| 台东县| 邹城市| 舟山市| 垫江县| 东兰县| 柏乡县| 四会市| 河北省| 平潭县| 扬州市| 洞头县| 长乐市| 福州市| 政和县| 共和县| 伊通| 连州市| 漯河市| 永丰县| 句容市| 芷江| 义马市| 贵州省| 宿松县| 延长县| 秦皇岛市| 古田县|