01-複雜度3 二分查詢(20 分)
本題要求實現二分查詢演算法。
函式介面定義:
position binarysearch( list l, elementtype x );
其中list結構定義如下:
typedef
int position;
typedef
struct lnode *list;
struct lnode ;
l是使用者傳入的乙個線性表,其中elementtype元素可以通過》、==、《進行比較,並且題目保證傳入的資料是遞增有序的。函式binarysearch要查詢x在data中的位置,即陣列下標(注意:元素從下標1開始儲存)。找到則返回下標,否則返回乙個特殊的失敗標記notfound。
裁判測試程式樣例:
#include
#include
#define maxsize 10
#define notfound 0
typedef
int elementtype;
typedef
int position;
typedef
struct lnode *list;
struct lnode ;
list readinput(); /* 裁判實現,細節不表。元素從下標1開始儲存 */
position binarysearch( list l, elementtype x );
int main()
/* 你的**將被嵌在這裡 */
輸入樣例1:
5 12 31 55 89 101
31輸出樣例1:
輸入樣例2:
3 26 78 233
31輸出樣例2:
思路
按照其給的介面 寫乙個 二分 就可以了 要注意 l 是乙個 指標
ac**
position binarysearch( list l, elementtype x )
return notfound;
}
資料結構(二) 演算法複雜度
演算法中執行次數最多的那條語句就是基本語句,測定執行時間就是計算基本語句的執行次數 可以忽略加法常數 與最高此項相乘的常數並不重要 最高次項的指數越大,增長越快 判斷乙個演算法執行效率時,函式中的常數和其他次要項常常可以忽略,更應該關注主項 最高端項 的階數 某個演算法,隨著n增大,它會越來越優於另...
資料結構01 時間複雜度和空間複雜度
什麼是時間複雜度?什麼是空間複雜度?遞迴斐波那契數列優化,尾遞迴優化 迴圈優化 常見時間複雜度 演算法就是計算或解決問題的步驟,用來將輸入資料轉化成輸出結果。演算法效率分析分為兩種 第一種是時間效率,第二種是空間效率。時間效率被稱為時間複雜度,而空間效率被稱作空間複雜度。時間複雜度主要衡量的是乙個演...
資料結構01 演算法的時間複雜度和空間複雜度
演算法 algorithm 是對特定問題求解步驟的一種描述。解決乙個問題往往有不止一種方法,演算法也是如此。那麼解決特定問題的多個演算法之間如何衡量它們的優劣呢?有如下的指標 1 時間複雜度 執行這個演算法需要消耗多少時間。2 空間複雜度 這個演算法需要占用多少記憶體空間。同乙個問題可以用不同的演算...