binarySearch

 

Java

while

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class A {
    public static int binarySearch(int[] array, int aim) {
        int low = 0, high = array.length - 1, mid;
        while (low <= high) {
            mid = (low + high) / 2;
            if (aim < array[mid]) {
                high = mid - 1;
            } else if (aim > array[mid]) {
                low = mid + 1;
            } else {
                return mid;
            }
        }
        return -(low + 1);
    }
 
    public static void main(String[] args) {
        int[] array={1,3,5,8};
        System.out.println(binarySearch(array,9));
    }
}

  

recursion

复制代码
public class A {
    public static int binarySearch(int[] array, int low, int high, int aim) {
        if (low > high) {
            return -(low + 1);
        }
        int mid = (low + high) / 2;
        if (aim < array[mid]) {
            return binarySearch(array, low, mid - 1, aim);
        } else if (aim > array[mid]) {
            return binarySearch(array, mid + 1, high, aim);
        } else {
            return mid;
        }
    }

    public static void main(String[] args) {
        int[] array = {1, 3, 5, 8};
        System.out.println(binarySearch(array, 0, array.length - 1, 9));
    }
}
复制代码

 

Go

while

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package main
 
func main() {
    var array = []int{1, 3, 5, 8}
    println(binarySearch(array, 9))
}
func binarySearch(array []int, aim int) int {
    var (
        low  = 0
        high = len(array) - 1
        mid  int
    )
    for low <= high {
        mid = (low + high) / 2
        if aim < array[mid] {
            high = mid - 1
        } else if aim > array[mid] {
            low = mid + 1
        } else {
            return mid
        }
    }
    return -(low + 1)
}

  

recursion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main
 
func main() {
    var array = []int{1, 3, 5, 8}
    println(binarySearch(array, 0, len(array)-1, -1))
}
 
func binarySearch(array []int, low, high, aim int) int {
    if low > high {
        return -(low + 1)
    }
    mid := (low + high) / 2
    if aim < array[mid] {
        return binarySearch(array, low, mid-1, aim)
    } else if aim > array[mid] {
        return binarySearch(array, mid+1, high, aim)
    } else {
        return mid
    }
}

  

posted @   ascertain  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示