迴圈和遞迴實現二分查詢

2021-09-25 14:04:20 字數 1070 閱讀 6012

對於乙個有序序列,定義頭尾,取中間值和目標值比較。

如果大了就重新以中間值的前乙個作為尾繼續查詢,小了就以中間值的後乙個作為頭繼續查詢。

每次淘汰一半,效率較高。

package com.yc.algorithm.recursion;

/** * 二分查詢

* @author yc

*/public class binarysearch ;

int target = 5;

int value = binarysearch(nums, target);

system.out.println("迴圈實現 : " + value);

value = binsearch(nums, 0, nums.length , target);

system.out.println("遞迴實現 : " + value);

}/**

* 迴圈實現

* @param nums

* @param target

* @return

*/private static int binarysearch(int nums, int target) else

mid = (head + tail) / 2;

}return mid;

}/**

* 遞迴實現

* @param nums

* @param head

* @param tail

* @param target

* @return

*/private static int binsearch(int nums, int head, int tail, int target) else if (nums[mid] < target)

return mid;}}

輸出如下 : 

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

二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。它充分利用了元素間的次序關係,採用分治策略,可在最壞的情況下用o log n 完成搜尋任務。下面給出二分查詢的兩種實現 includeint fi...

二分查詢 Python實現(迴圈 遞迴)

維基百科 在電腦科學中,二分搜尋 英語 binary search 也稱折半搜尋 英語 half interval search 對數搜尋 英語 logarithmic search 是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋...

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

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