博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【algorithm】 二分查找算法
阅读量:2217 次
发布时间:2019-05-08

本文共 1272 字,大约阅读时间需要 4 分钟。

二分查找算法:<维基百科>

在计算机科学中,二分搜索英语:binary search),也称折半搜索英语:half-interval search)对数搜索英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。

 

 

代码:

import java.util.Arrays;/** * 二分查找算法 *  * 二分查找是一个搜索算法,也叫折半查找,就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键, * 就在左子数组继续查找;如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素。 *  * @author xwolf * @date 2017-05-24 11:27 * @since 1.8 */public class BinarySearch {    /**     * 二分查找     * @param keys  要检索的数组     * @param key   要检索的元素     * @return     */    public static int search(int[] keys ,int key){        //先排序        Arrays.sort(keys);        //指定开始查找的位置        int start = 0;        //结束的位置        int end = keys.length-1;        while (start <= end){             //中间位置索引             int middle = start + (end-start)/2;             //中间元素             int middleKey = keys[middle];             if (key > middleKey){                 //大于中间元素,从右边部分查找                 start = middle+1;             } else if (key < middleKey){                 //小于中间元素,从左边开始查找                 end = middle-1;             }else                 return middle;        }        return -1;    }}

 

转载于:https://www.cnblogs.com/lonelywolfmoutain/p/6907250.html

你可能感兴趣的文章
剑指offer 21.包含min函数的栈
查看>>
剑指offer 23.从上往下打印二叉树
查看>>
剑指offer 25.二叉树中和为某一值的路径
查看>>
剑指offer 60. 不用加减乘除做加法
查看>>
Leetcode C++《热题 Hot 100-14》283.移动零
查看>>
Leetcode C++《热题 Hot 100-15》437.路径总和III
查看>>
Leetcode C++《热题 Hot 100-17》461.汉明距离
查看>>
Leetcode C++《热题 Hot 100-18》538.把二叉搜索树转换为累加树
查看>>
Leetcode C++《热题 Hot 100-21》581.最短无序连续子数组
查看>>
Leetcode C++《热题 Hot 100-22》2.两数相加
查看>>
Leetcode C++《热题 Hot 100-23》3.无重复字符的最长子串
查看>>
Leetcode C++《热题 Hot 100-24》5.最长回文子串
查看>>
Leetcode C++《热题 Hot 100-28》19.删除链表的倒数第N个节点
查看>>
Leetcode C++《热题 Hot 100-29》22.括号生成
查看>>
Leetcode C++《热题 Hot 100-47》236.二叉树的最近公共祖先
查看>>
Leetcode C++《热题 Hot 100-48》406.根据身高重建队列
查看>>
《kubernetes权威指南·第四版》第二章:kubernetes安装配置指南
查看>>
Leetcode C++《热题 Hot 100-49》399.除法求值
查看>>
Leetcode C++《热题 Hot 100-51》152. 乘积最大子序列
查看>>
Leetcode C++ 《第181场周赛-1》 5364. 按既定顺序创建目标数组
查看>>