线性查找法&二分查找法
来源:互联网 发布:软件的缺陷等级 编辑:程序博客网 时间:2024/06/05 05:09
数组的查找:在数组中寻找特定元素的过程。
1、线性查找法
算法思路:线性查找法是将要查找的关键字key与数组中的元素逐个进行比较,
直到列表中找到与关键字匹配的元素,或者查完列表也没有找到。如果匹配成功,返回与关键字匹配的元素在数组中的下标,如果没有找到则返回-1。
适用于小数组或没有排序的数组中查找,执行时间随着数组元素个数的增长而线性增长,因此对大数组效率不高。
代码实现:
public class LinearSearch{
public static int linearSearch(int[] list,int key){ for(int i=0;i<list.length;i++){ if(key==list[i]) return i; } return -1;}
}
2、二分查找法
前提:数组元素已经排序
假设数组已按升序排列,二分查找法将关键字与数组的中间元素比较;
(1)如果关键字比中间元素小,那么只需在前一半数组元素中查找。
(2)如果关键字和中间元素相等,则匹配成功,查找结束。
(3)如果关键字比中间元素大,则只需在后一半数组元素中查找。
在一个已经排序的数组中用二分法查找,只需要比较log2n+1次。
如果关键字在数列中,返回其下标。否则返回插入点下标加1的负值。
算法思路:首先让关键字key与数列的中间元素比较,数列的低下标low为0,高下标high为list.length-1。如果key小于list[mid],将high设为mid-1;如果key==list[mid],则匹配成功返回mid。如果key>list[mid]则将low设为mid+1,直到low>high或匹配成功。如果low>high,则返回-1-low,low是插入点。
代码实现:
public class BinarySearch{ public static int binarySearch(int[] list,int key){ int low = 0; int high = list.length-1; while(low<=high){ int mid = (low+high)/2; if(key<list[mid]) high = mid-1; else if(key==list[mid]) return mid; else low = mid+1; } return -low-1; }}
0 0
- 线性查找法&二分查找法
- 查找----二分查找法
- 线性查找与二分查找法的差异
- Java — 线性查找和二分查找法
- 二分查找法,查找string
- 二分查找法
- 二分查找法
- 二分查找法
- 二分查找法
- java 二分查找法
- 二分查找法
- 二分查找法
- 二分查找法
- 二分查找法
- java:二分查找法
- C++ 二分查找法
- 二分查找法
- 【二分查找法】
- this指针你“造(知道)”吗?
- Groovy入门学习
- 算法基础概念
- iOS集成极光之后,提交审核IDFA配置
- 数据库 VS 数据仓库
- 线性查找法&二分查找法
- 深入分析ContextLoaderListener
- 一、步进电机的结构及原理
- C#事务处理(三)之Transactions事务
- 滑动切换Activity
- Android 蓝牙总结
- HashSet和TreeSet的区别
- 使用html5 audio api音频可视化: Hello by OMFG
- iOS多线程理解告别生硬