MOOC 資料結構 01 複雜度3 二分查詢

2022-05-01 06:36:08 字數 1140 閱讀 7927

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 空間複雜度 這個演算法需要占用多少記憶體空間。同乙個問題可以用不同的演算...