查找算法:二分查找

Searching Algorithms: Binary Search

. 前言

该博客用于本弱鸡复习巩固,打牢基础,还望各大佬不吝赐教。

. 基本思路

思路很简单,不再赘述。
前提要求是 待查找数组必须有序

. 图片示例

二分查找

. 算法复杂度分析

平均最好最坏
O(logn)O(1)O(logn)
---第一次就找到查找失败 lon2n+1 次

. 代码实现

 1import java.util.Arrays;
2
3/**
4 * BinarySearch 二分查找/折半查找
5 * 前提要求是 待查找数组必须有序!
6 * 
7 * 算法复杂度分析
8 * * 时间复杂度(平均)   O(logn)
9 * * 时间复杂度(最坏)   O(logn) 找到或者查找失败 log2n+1 次
10 * * 时间复杂度(最好)   O(1) 第一次就找到
11 */

12public class BinarySearch {
13
14    public static void main(String[] args) {
15
16        int[] a = new int[]{0123456789};
17        System.out.println(Arrays.toString(a));
18
19        int key = 10;
20
21        int index = binarySearch(key, a);
22
23        System.out.println(index);
24    }
25
26    public static int binarySearch(int key, int[] a) {
27        int mid;
28        int start = 0;
29        int end = a.length - 1;
30        /*保证角标不越界*/
31        while (start <= end) {
32            mid = (start + end) / 2;
33            if (key < a[mid]) {
34                end = mid - 1;
35            } else if (key > a[mid]) {
36                start = mid + 1;
37            } else {
38                return mid;
39            }
40        }
41        return -1;
42    }
43
44}
复制代码

. 参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值