[算法篇]二分查找

mac2025-12-19  5

写在前面 有人曾经问过我,什么样的人可以称之为程序员,我那时候是这么回答的:“会编码的人”。这个概念非常狭隘,但是恰恰也说明了问题的本质。 一个需求,有千万种实现方式,程序员就是那些知道如何通过代码完成这个需求的人,只不过差的程序员用的是最笨的方法,好的程序员总在寻找最优的解决方法。 因此,会编码是程序员最基本的能力,如何成为好的程序员,却从来不是一件容易的事。算法就是成为优秀程序员的其中一部分必修课。 截止到目前,满打满算,进入软件行业也有接近3年了。这3年,做过运维、搞过网络、写过代码,奋斗过也迷茫过。有时候人总喜欢不断前行,忘记回头看看来时的路,回顾回顾以前的风景。子曰:“温故而知新”。因此,从今天开始,有时间我会不断更新自己的博客,这是对过去的总结,也是对将来的展望。

这章是算法的开篇,先写一篇关于二分查找的文章。 首先,我们需要明白,什么是二分查找。

概念

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

算法复杂度

O(logn)

算法实现

public static int binarySearch(Integer[] srcArray,int des){ //最小的索引 int start = 0; //最大的索引 int end = srcArray.length; while(start <= end){ //等同于(start+end)/2,为什么这么写只是为提高逼格,仔细品一下就知道为什么会这么写 int middle = (start + end)>>>1; if(srcArray[middle] == des){ return middle; }else if(srcArray[middle] > des){ end = middle - 1; }else { start = middle + 1; } } //都没有,返回-1表示没找到该值 return -1; }
最新回复(0)