演算法第二章上機報告

2022-05-20 04:23:45 字數 1004 閱讀 2646

7-1 二分查詢 (20 分)

輸入n值(1<=n<=1000)、n個非降序排列的整數以及要查詢的數x,使用二分查詢演算法查詢x,輸出x所在的下標(0~n-1)及比較次數。若x不存在,輸出-1和比較次數。

輸入共三行: 第一行是n值; 第二行是n個整數; 第三行是x值。

輸出x所在的下標(0~n-1)及比較次數。若x不存在,輸出-1和比較次數。

4

1 2 3 4

1

0

2

輸入n值(1<=n<=1000)、n個非降序排列的整數以及要查詢的數x,使用二分查詢演算法查詢x,輸出x所在的下標(0~n-1)及比較次數。若x不存在,輸出-1和比較次數。

1、對輸入的陣列

2、二分法

3.查詢成功,輸出其所在位置,以及比較次數

4、失敗,輸出-1及比較次數

1 #include2

using

namespace

std;

3extern

int sum=0;4

5int binarysearch(int a,const

int &x,intn)6

17return -1;18

} 19

20int

main()

21

1、時間複雜度:1)、本題使用的是二分查詢演算法,

2)、while迴圈一次,待查詢陣列的長度減小至前一次的一半

3)、時間複雜度為t(n) = o(logn)

2、空間複雜度:1)、輔助空間是常數級別的,

2)、空間複雜度為o(1)

能理解二分法的使用,同時在三道題的鞏固下,對二分法有加深了印象,同時和同學一同完成,還能互相提示,而且,還能夠互相講思路,同時能夠指出對方的不足,以及自己的某些細節方面的缺漏,最後對於老師的提問還是有些害怕,就是對同學能夠清晰的講出來,但是面對老師不敢,這真的是一件很神奇的事情,下次加油。

演算法第二章上機實踐報告

實踐題目名稱 找第k個小的數 問題描述 設計乙個平均時間為o n 的演算法,在n 1 n 1000 個無序的整數中找出第k小的數。演算法描述 就是先假設a left 為這個分界值x,然後排序。比較x是不是第k個如果是,返回這個值。如果不是比較一下x和a k 的大小,如果xa k 遞迴在x的右邊找 演...

演算法第二章上機實踐報告

7 1 最大子列和問題 20分 給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試資...

演算法第二章上機實踐報告

1,實踐題目名稱 最大子列和問題 給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試...