1. 程式人生 > >算法第2章上級實踐報告

算法第2章上級實踐報告

截取 返回值 操作 心得體會 復雜度分析 讓我 排列 輸出 元素

實踐題目:7-1二分查找(20分)

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

算法描述:求取序列的中位數,比較查找數x與中位數的大小,中位數比查找數x大,截取中位數左則序列作為新的序列,中位數比查找數x小,截取中位數右則序列作為新的序列;重復以上操作,直到找到x。

算法時間及空間復雜度分析:

時間復雜度:O(log2n),n個元素每次分為一半,如n,n/2,n/4,....n/2^k,其中k就是循環的次數n/2^k取整後>=1,即令n/2^k=1,可得k=log2n,(是以2為底,n的對數),所以時間復雜度可以表示O(h)=O(log2n);

空間復雜度為數組空間大小,是一個常數,與變量n的取值無關。所以空間復雜度為O(1)

心得體會:在做題的時候,算法是沒有問題的,主要是因為函數沒有返回值,陷入了死循環,這次做題讓我知道了返回值的的主要性。

算法第2章上級實踐報告