C 二分查詢

2021-10-04 06:50:09 字數 1710 閱讀 3376

課程:資料結構(陳越、何欽銘)

本題要求實現二分查詢演算法。

position binarysearch( list l, elementtype x );
其中list結構定義如下:

typedef int position;

typedef struct lnode *list;

struct lnode ;

l是使用者傳入的乙個線性表,其中elementtype元素可以通過》、==、《進行比較,並且題目保證傳入的資料是遞增有序的。函式binarysearch要查詢xdata中的位置,即陣列下標(注意:元素從下標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()

/* 你的**將被嵌在這裡 */

5

12 31 55 89 101

31

2
3

26 78 233

31

0
自己實現了readinput()函式用於測試,細節在**最後部分,不太完善但可以使用。

要注意,在對結構體內的成員初始化前,要對結構體指標分配記憶體,不然會出現記憶體錯誤。

參考資料:c語言結構體指標初始化

#include #include #define maxsize 10

#define notfound 0

typedef int elementtype;

typedef int position;

struct lnode ;

typedef struct lnode *list;

list readinput(); /* 元素從下標1開始儲存 */

position binarysearch( list l, elementtype x );

int main()

/* 你的**將被嵌在這裡 */

position binarysearch( list l, elementtype x )

else if(l->data[midp] > x)

else

}return retp;

}/* 輸入資料存入結構物件中,返回指標 */

list readinput()

plist->last = n;

return plist;

}

c 二分查詢

二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 線性表是有序表,即表中結點按關鍵字有序,並且要用向量作為表的儲存結構。不妨設有序表是遞增有序的。public class program else return 1 查詢失敗 public static void main string...

C 二分查詢

二分查詢,又叫折半查詢,顧名思義,可以通過比較中間位置是否與要查詢的相等。如果相等即找到了目標,否則,看目標落在中間位置左側還是右側,然後再同樣的到對應區間去找。假設我們有這樣乙個陣列 define maxsize 10 int array maxsize 我們可以標記左下標以及右下標 int le...

二分查詢C

雖然二分查詢思路很簡單,但實現起來需要注意很多細節。如區間是閉合區間還是前開後閉區間,迴圈的退出條件是left right 還是 left right,下一步搜尋是使用mid還是mid 1等。普通二分查詢 遞迴 intbinary search const vector int nums,const...