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

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

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

2020-01-26 14:12:59
字體:
來源:轉載
供稿:網友

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泰安市| 合江县| 威信县| 常山县| 仪征市| 大化| 渑池县| 乌兰县| 浑源县| 滁州市| 徐州市| 汝南县| 兴文县| 长岭县| 方正县| 连江县| 于田县| 梅州市| 宜春市| 梨树县| 理塘县| 乐至县| 沿河| 宣化县| 徐闻县| 自贡市| 错那县| 宿松县| 乾安县| 中西区| 开阳县| 鲁山县| 温州市| 沁源县| 韶关市| 延长县| 梁河县| 西乌珠穆沁旗| 池州市| 台前县| 木兰县|