二分查詢 變種總結

2021-09-08 23:39:53 字數 1069 閱讀 5023

二分查詢是乙個基礎的演算法,二分查詢就是將查詢的鍵和子陣列的中間鍵作比較,如果被查詢的鍵小於中間鍵,就在左子陣列繼續查詢;如果大於中間鍵,就在右子陣列中查詢,否則中間鍵就是要找的元素。

在開發中,需求大概有以下幾種:

查詢指定值首次出現下標

查詢指定值最後一次出現下標

查詢小於指定值的最大數的下標

查詢大於指定值的最小數的下標

開發的套路都是下面**中所示

int binfirstksearch(int p, int key)   else 

}return ??;

}@test

public void test() ;

system.out.println("index=" + binfirstksearch(p, 11));

}

變得只是操作符與返回值

基於上述需求中所示

查詢指定值首次出現下標 即 查詢陣列元素等於指定值的集合中最左邊的下標

int binfirstksearch(int p, int key)   else 

}return start;

}

查詢指定值最後一次出現下標即 查詢陣列元素等於指定值的集合中最右邊的下標

int binfirstksearch(int p, int key)   else 

}return end;

}

3.查詢小於指定值的最大數的下標即 查詢陣列元素小於指定值的集合中最右邊的下標

int binfirstksearch(int p, int key)   else 

}return end;

}

4.查詢大於指定值的最小數的下標即 查詢陣列元素大於指定值的集合中最左邊的下標

int binfirstksearch(int p, int key)   else 

}return start;

}

以上即為關於二分查詢的總結 ,如果**說的不對,也請多多指教

二分查詢及變種二分查詢

二分查詢也稱折半查詢 binary search 它的查詢效率很好。二分查詢有乙個要求是必須採用順序儲存結構,而且表種的元素是有序的。只有滿足這個條件我們才能使用二分查詢。查詢條件 查詢區域的左邊界,小於等於查詢區域的右邊界 查詢過程 1.迴圈條件 查詢條件 2.計算序列中間下標位置 3.如果待查詢...

二分查詢及其變種

返回帶查詢元素key的下標。若沒有key元素,則返回 1。注意 1 while迴圈的條件是low high 2 每次迭代hi mid 1 或lo mid 1 二分查詢,找到該值在陣列中的下標,否則為 1 static int binaryserach int array,int key else i...

二分查詢及其變種

3 二分查詢變種總結 時間複雜度概念還不清楚的可以先看 這個文章 由於二分查詢每次查詢都是從陣列中間切開查詢,所以每次查詢,剩餘的查詢數為上一次的一半,從下表可以清晰的看出查詢次數與剩餘元素數量對應關係 肯定是大於等於1,也就是n 2 k frac 2k n 1,我們計算時間複雜度是按照最壞的情況進...