二分查找之java
来源:互联网 发布:中国的网络发展历程 编辑:程序博客网 时间:2024/06/13 10:30
简述:
二分查找又称折半查找。优点是比较次数少,查找速度快,平均性能好。
缺点是要求待查表为有序表,因此,折半查找方法适用于不经常变动而查找频繁的有序列表。
思想:
二分查找的基本思想是将n个元素分成大致相等的两部分,用数组array[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止, 如果a[n/2]>x,则只要在数组a的左半部分继续搜索x, 如果x>a[n/2],则只要在数组a的右半部搜索x.
public class BinarySearch { public static void main(String[] args) { int[] array = {1, 2, 3, 4, 5, 6, 7, 8}; //该数组必须是有序的 int index = search(array, 8); System.out.println(index); } static int search(int[] number, int target) { int low = 0; int upper = number.length - 1; // 增加low或者减少upper,直到找到元素 while (low <= upper) { int mid = (low + upper) / 2; // 判断target的位置 if (target == number[mid]) { return mid; } else if (target < number[mid]) { upper = mid - 1; } else if (target > number[mid]) { low = mid + 1; } } //找不到后返回-1 return -1; }}
时间复杂度分析
二分查找最好情况无疑就是可以一次找到元素,时间复杂度是o(1)。
那我们来分析最坏情况,其实最主要就是循环的次数,假如有4个元素,最坏情况就需要经过三次循环才能找到元素,设n为元素个数,x就是循环的次数,一直在长度为n, n/2, n/4 ,…. n/2^(x-1)的数组中找元素,当长度等于1时找到元素,所以令n/2^(x-1)等于1,这时找到元素,取log后可得x=log2n +1,所以时间复杂度就是o(log2n)
0 0
- 二分查找之java
- java之二分查找
- 二分查找之Java实现
- 二分查找之Java实现
- java 之 二分查找实现
- java算法之二分查找
- Java-算法之二分查找
- 二分查找之java实现
- java递归之--二分查找
- java算法之二分查找
- 二分查找之Java实现
- Java之二分查找-yellowcong
- java基础查找之二分查找
- JAVA常用查找之二分查找法
- 查找之二分查找
- 查找之二分查找
- 查找之二分查找
- Java排序算法之二分查找
- Unity3d 光照贴图 LightMapping
- 黑马程序员_java集合概述
- 2048C++源代码
- Python项目四:新闻聚合
- July list
- 二分查找之java
- Copy Constructor 的建构操作
- 设计模式-工厂模式
- php函数中使用html的一种用法
- jQuery网上学习资料推荐
- 3Longest Substring Without Repeating Characters
- 黑马程序员_java 面向对象的理解
- Input.GetAxis();
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)