国产探花免费观看_亚洲丰满少妇自慰呻吟_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; } 

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 门源| 景洪市| 都兰县| 麻栗坡县| 建湖县| 建水县| 疏勒县| 丹凤县| 章丘市| 苍梧县| 肥乡县| 股票| 秦皇岛市| 讷河市| 厦门市| 灵武市| 芜湖县| 潮州市| 宝山区| 伽师县| 龙陵县| 高雄县| 黄龙县| 横峰县| 九龙坡区| 永清县| 农安县| 通榆县| 且末县| 道真| 潜江市| 平邑县| 五大连池市| 通州市| 文水县| 讷河市| 长沙县| 鄯善县| 扎兰屯市| 梧州市| 郁南县|