第二章上機實驗報告

來源:互聯網
上載者:User

標籤:靈活   return   解決   問題   資源   iostream   ==   整數   大致   

1、實踐題目:7-1

2、問題描述:使用二分尋找演算法在n個非降序排列的整數中尋找x,輸出x所在的下標(0~n-1)及比較次數。若x不存在,輸出-1和比較次數。

3、演算法描述:將n個元素分成個數大致相同的兩半,取a[mid]與x比較。如果x=a[mid],則找到x,演算法終止;如果x<a[mid],則只在數組a的左半部繼續尋找x,如果x>a[mid],則只在a的右半部繼續搜尋x。同時,在while語句裡加一個b統計比較次數。

4、代碼如下:

1 #include<iostream> 2 using namespace std; 3 int BinarySearch(int a[],int left,int right,int x,int &b){ 4     while (left<=right){ 5         b++; 6         int middle =(left+right)/2; 7         if (x==a[middle]){ 8             return middle; 9         }10         if(x>a[middle]){11             left=middle+1;12         }13         else {14             right =middle-1;15         } 16     }17     return -1;18 }19 int main(){20     int n,x,b=0;21     cin>>n;22     int a[1000];23     for (int i=0;i<n;i++){24         cin>>a[i];25     }26     cin>>x;27     int index=BinarySearch(a,0,n-1,x,b);28     cout<<index<<endl<<b;29 }    

5、時間複雜度和空間複雜度:用了二分法搜尋演算法,尋找x的時間複雜度為O(logn);空間複雜度為數組空間大小,是一個常數,與變數n的取值無關。所以空間複雜度為O(1)

6、心得體會:要靈活地運用學過的代碼,將它們靈活地嵌入要解決的問題中。在解決問題時,要多考慮到最優解,也就是時間複雜度最小的解法,這有利於使演算法更便捷,資源更能合理的運用。

第二章上機實驗報告

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.