二分查找or折半查找
生活随笔
收集整理的這篇文章主要介紹了
二分查找or折半查找
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 package com.gxf.search;
2
3 /**
4 * 測試折半查找or二分查找
5 * @author xiangfei
6 *
7 */
8 public class BiSearch {
9
10 /**
11 * 非遞歸實現,從第1個元素開始查找
12 * @param array
13 * @param k
14 * @return 0 查找失敗
15 */
16 public int biSearch(int array[], int k){
17 int low = 1;
18 int high = array.length - 1;
19
20 while(low <= high){
21 int mid = (low + high) / 2;
22 if(k == array[mid]){
23 return mid;
24 }
25 if(k > array[mid]){
26 low = mid + 1;
27 }
28 else{
29 high = mid - 1;
30 }
31 }
32 return 0;
33 }
34
35 /**
36 * 遞歸實現
37 * @param array
38 * @param k
39 * @param l
40 * @param h
41 * @return
42 */
43 public int biSearch(int array[], int k, int l, int h){
44 if(l > h){
45 return 0 ;
46 }
47 if(k == array[(l + h) / 2])
48 return (l + h) / 2;
49 else if(k > array[(l + h) / 2]){
50 return biSearch(array, k, (l + h) / 2 + 1, h);
51 }
52 else{
53 return biSearch(array, k, l, (l + h) / 2 - 1);
54 }
55 }
56
57 public static void main(String[] args) {
58 BiSearch biSearch = new BiSearch();
59 int array[] = {0,1,3,4,5,6,7};
60 System.out.println(biSearch.biSearch(array, 5));
61 System.out.println(biSearch.biSearch(array, 5, 1, array.length - 1));
62
63 }
64
65 }
?
轉載于:https://www.cnblogs.com/luckygxf/p/4093878.html
總結
以上是生活随笔為你收集整理的二分查找or折半查找的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数组集合区别
- 下一篇: nginx的root alias 指令