01 複雜度3 二分查詢 記錄

2021-10-23 06:18:54 字數 1184 閱讀 7921

最近開始複習資料結構,選擇去看浙江大學的慕課,裡面的測驗和作業基本都是pta上面的,記錄下**與有關注釋。

這道題是實現二分找有序序列中的指定值,對c語言中的鍊錶還不是很熟悉,菜雞加油鴨。

本題要求實現二分查詢演算法。 函式介面定義:

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:

position binarysearch

( list l, elementtype x )

else

if(l->data[mid]

> x)

else

}return po;

}

01 複雜度3 二分查詢

position binarysearch list l,elementtype x 其中list結構定義如下 typedef int position typedef struct lnode list struct lnode l是使用者傳入的乙個線性表,其中elementtype元素可以通過 ...

01 複雜度3 二分查詢

本題要求實現二分查詢演算法。position binarysearch list l,elementtype x 其中list結構定義如下 typedef int position typedef struct lnode list struct lnode l是使用者傳入的乙個線性表,其中elem...

01 複雜度3 二分查詢

思路還是很簡單的,就是 左傾 還是 右傾 的問題。需要注意的細節就是 當要查詢的值在 頭和尾的情況。解決辦法就是在 while 語句的條件的中取 還是 這個需要思考一哈,哈哈哈。附上我的兩個 第乙個是我初學,第二個是我學了兩個月後。二分法的本質就是不停縮小範圍,因為是順序的序列,於是靠找端點縮小範圍...