c 二分查詢實現(非遞迴和遞迴方式)

2021-08-08 17:58:37 字數 694 閱讀 7557

int erfen1(int a,int key, int l, int r)

if (a[mid] < key)

}int erfen2(int a, int key, int l, int r)

if (a[mid] < key)

}return -1;

}大學學資料結構時侯學的演算法,現在複習一下:

[cpp]view plain

copy

#include 

using

namespace std;  

/**二分查詢思想:1、陣列從小到大排序;2、查詢的key每次和中間數比較,如果key小於mid

查詢mid左側的陣列部分;如果key大於mid,則查詢mid右側的陣列部分;如果相等,則直接返回mid。

輸入:排序陣列-array,陣列大小-asize,查詢值-key

返回:返回陣列中的相應位置,否則返回-1

*///非遞迴查詢

int binarysearch(int *array, int asize, int key)  

return -1;  

}  //遞迴

int binarysearchrecursive(int *array, int low, int high, int key)  

int main()   

c 二分查詢實現(非遞迴和遞迴方式)

大學學資料結構時侯學的演算法,現在複習一下 include using namespace std 二分查詢思想 1 陣列從小到大排序 2 查詢的key每次和中間數比較,如果key小於mid 查詢mid左側的陣列部分 如果key大於mid,則查詢mid右側的陣列部分 如果相等,則直接返回mid。輸入...

二分查詢實現(遞迴和非遞迴)

遞迴的二分查詢,查詢單個值 時間複雜度 log2n 有點像二叉排序樹的查詢 param arr 待查詢陣列,有序 param low param high param findval 待找值 return 待找值的下標,沒有返回 1 public static intbinarysearch int...

二分查詢 非遞迴實現和遞迴實現

二分查詢 演算法思想 又叫折半查詢,要求待查詢的序列有序。每次取中間位置的值與待查關鍵字比較,如果中間位置的值比待查關鍵字大,則在前半部分迴圈這個查詢的過程,如果中間位置的值比待查關鍵字小,則在後半部分迴圈這個查詢的過程。直到查詢到了為止,否則序列中沒有待查的關鍵字。二分查詢的前提是這個陣列是有序的...