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 #include2using
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。現要求你編寫程式,計算給定整數序列的最大子列和。本題旨在測試各種不同的演算法在各種資料情況下的表現。各組測試...