<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Russell_0221

      導航

      算法第二章實踐報告

      1.實踐題目名稱

         7-1 maximum number in a unimodal array 

       

      2.問題描述

         You are a given a unimodal array of n distinct elements, meaning that its entries are in increasing order up until its maximum element, after which its elements are in decreasing order.
         Give an algorithm to compute the maximum element that runs in O(log n) time.
         給定了一個由n個不同元素組成的單峰數組,按遞增順序排列,直到它的最大元素為止,之后它的元素按遞減順序排列。
         在 O(logn)時間內運行給出一個算法來計算的最大元素。
       
      3.算法描述
      #include <iostream>
      using namespace std;
      
      int SearchMax(int a[], int n){
          int lef = 0;
          int rig = n-1;
          while(lef<=rig){
              int mid = (lef+rig)/2;
              if(a[mid]>a[mid-1] && a[mid]>a[mid+1]){
                  return a[mid];
              }
              if(a[mid]>a[mid+1] ){
                  rig = mid - 1;
              }
              else{
                  lef = mid + 1;
              }
          }
      }
      
      int main(){
          int n;
          cin>>n;
          int a[n];
          for(int i=0; i<n; i++){
              cin>>a[i];
          }
          cout<<SearchMax(a, n);
          return 0;
      }

         因為數組排序先增大在遇到最大值后減小,因此可使用二分法將數組劃分為遞增與遞減的兩部分,而最大值便存在于兩個部分的重合處。

         可設置兩個指針分別從前半部分和后半部分進行對最大值的查找,從而可以減少查找所花的時間,提高查找效率。

         當 a[mid]>a[mid-1] && a[mid]>a[mid+1] 時,說明此時a[mid]大于左側和右側的兩個數,而在該數組中符合條件的只有最大值,最大值既是a[mid];

         當 a[mid]>a[mid+1] 時,說明此時a[mid]大于右側的數,但小于左側的數,此時a[mid]仍處于遞減數列中,則需要指針右移;

         同上,當情況相反時則需要指針左移。

       

      4.算法時間及空間復雜度分析

         時間復雜度:因為使用了二分搜索法,所以對數組的查找時間規模減半,時間復雜度為O(log n)。

         空間復雜度:因為沒有其他的數組,所以空間復雜度為O(1)。

       

      5.心得體會

         在這次實驗課上和搭檔進行了討論,因為對這道題的思路都一致但是打出來的代碼截然不同,所以對兩個代碼共同討論了些許時間,了解對方每一行代碼所代表的含義。

         這樣能讓我們對題目和代碼的了解更加清晰,同時能互相討論不同的思路想法。

         課后對這個題再次進行了嘗試,花了大半天時間找錯,結果是錯在return a[mid] 時,我只return mid 了……

         希望以后不要再犯這種粗心的錯。

       

      6.分治法的個人體會和思考

        分治法便是將一個較為負責的問題化為規模較小的數個子問題,在一些情況下確實能夠提高運算效率,但在一些時候使用分治法反而會更加繁雜。

         所以在使用分治法時需要先對分治法有一定的了解,提前判斷分治法是否適應這個題目要求。

      posted on 2021-10-11 10:53  Russell_0221  閱讀(40)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 亚洲第一香蕉视频啪啪爽| 亚洲免费成人av一区| 欧洲一区二区中文字幕| 国产精品色三级在线观看| 午夜福利影院不卡影院| 国产精品欧美福利久久| 一二三三免费观看视频| 国产在线观看91精品亚瑟| 热99久久这里只有精品| 亚洲va成无码人在线观看天堂| 国产精品毛片无遮挡高清| 欧美xxxx精品另类| 国产亚洲精品第一综合另类| 天堂网在线.www天堂在线资源| 激情六月丁香婷婷四房播| 色就色偷拍综合一二三区| 国产精品制服丝袜无码| 虎白女粉嫩尤物福利视频| 国产一区二区三区美女| 黑人巨大AV在线播放无码| 少妇高潮水多太爽了动态图| 亚洲精品国模一区二区| 日韩精品亚洲专在线电影| 97人人模人人爽人人喊网| 亚洲国产精品成人av网| 中文字幕制服国产精品| 国产综合久久久久鬼色| 亚洲无人区码二码三码区| 亚洲一线二线三线品牌精华液久久久 | 麻豆精品国产熟妇aⅴ一区| 稻城县| 精品尤物国产尤物在线看| 国产精品中文字幕一区| 一本大道av人久久综合| 欧美成人无码a区视频在线观看| 亚洲精品一二三在线观看| 日日猛噜噜狠狠扒开双腿小说| 国产中文字幕在线一区| 色伊人久久综合中文字幕| 野花在线观看免费观看高清| 欧美日韩亚洲国产|