在無序集合的遞迴二分查詢

2021-07-06 11:17:21 字數 475 閱讀 4910

使用遞迴實現對乙個無序集合元素的二分查詢,假設已經有乙個排序函式,供你直接使用,所以你不需要自己實現乙個排序函式,保證**可讀性、易於維護、有一定的健壯性。

#define len(a) ( (sizeof(a)) / (sizeof(a[0])) )

bool g_iusort = true; //標誌位,未排序

int comp(const void* a, const void* b)

bool getbisearch(int a, int length, int value_find)

int start = 0, end = length-1;

int mid = (start+end)/2;

if (start<=end)

{ if (a[mid]>value_find)

getbisearch(a, mid, value_find);

else if (a[mid]

二分查詢和遞迴的二分查詢

在乙個有序的陣列中查詢給定的資料項,把陣列衝中間分成兩半,然後看要查詢的資料項在陣列的哪一半,再次折半查詢。如下 public int find long searchkey else if lowerbound upperbound else private int recfind long se...

二分查詢及遞迴的二分查詢

一 思路 二分查詢又名折半查詢,顧名思義是分成兩部分,每查詢一次資料減半,所以查詢起來會很快。但是二分查詢的條件是已經有序的資料。1 設定兩個變數i,j.為查詢的範圍,i一般為0,j一般為陣列長度減一 2 設定變數mid,mid為所查陣列範圍的中間位置,即mid i j 2 3 比較所要查詢的資料v...

二分查詢(遞迴)

二分查詢 problem description 給出含有n個數的公升序序列,保證序列中的數兩兩不相等,這n個數編號從1 到n。然後給出q次詢問,每次詢問給出乙個數x,若x存在於此序列中,則輸出其編號,否則輸出 1。input 單組輸入。首先輸入乙個整數n 1 n n 3000000 接下的一行包含...