1. 程式人生 > >算法第二章實踐

算法第二章實踐

實踐 比較 掌握 void 提高 計算 情況下 輸出 心得

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

用二分搜索法,將若幹個元素分成基本相同的兩部分,x與a[n/2]比較,每次搜索數組的大小減一半。算法最壞情況下,時間復雜度為logn,空間復雜度是常數O(1)。算法大致為:若x=a[mid],則返回mid,若x<[mid],則right=mid-1,x>[mid]則left=mid+1

心得體會:該題的難點在於x不存在,輸出-1和比較次數。由於返回值只有一個,所以可以用void在子函數直接輸出次數,還有就是比較次數,我是用logn計算的。總的來說,掌握好二分搜索法,然後加上一些判斷語句之類就差不多,當然這個算法是我3道題寫得最久的,細節方面做得還不行,希望下次能有提高吧。

算法第二章實踐