常用的高效「查找」算法
来源:互联网 发布:小岚云 骆玉笙 知乎 编辑:程序博客网 时间:2024/05/18 01:06
一、二分查找
排序的重要意义之一,就是为检索带来方便。试想有10^6个整数,你希望确认其中是否包含12345。最容易想到的方法就是把它们放到数组A中,然后依次检查这些整数是否等于12345。这样的方式对于单次询问来说,工作得很好,但如果需要查找10000个数,就需要把整个数组A遍历10000次,而如果事先将数组A排序,就可以查找得更快——就好比在字典中查找单次不必一页一页翻一样。
在有序表中查找元素常常使用二分查找(BinarySearch)。它的基本思路就像是“猜数字游戏”:你在心里想一个不超过1000的正整数,我可以保证在10次之内猜到——只要你每次告诉我猜的数比你想的大一些、小一些,或者正好猜中。
猜的方法就是二分。首先我猜500,除了运气特别好正好猜中以外,不管你说太大还是太小,我都能把可行范围缩小一般:如果太大,那么答案在1-499之间,如果太小,那么答案在501-1000之间。只要每次选择可行区间的中点去猜,每次都可以把范围缩小一半。由于log2(1000) <10所以10次一定能猜得到。
这也是二分查找的基本思路。注意:二分查找只适用于有序序列。
int binarysearch(int *A,int x,int y,int v){ int m; while(x<y) { m=x+(y-x)/2; if(A[m] == v) return m; else if (A[m] > v) y=m; else x = m+1; } return -1; /**未查找到*/}
二分查找常常用在一些抽象的场合,没有数组A,也没有要查找的v,但是二分的思想仍然适用。
0 0
- 常用的高效「查找」算法
- 常用的高效「排序」算法
- 常用的查找算法
- 高效算法的常用技术(算法导论)
- 几个常用的查找算法
- 常用的STL查找算法
- 常用的 STL 查找算法
- 常用的 STL 查找算法
- 常用的STL查找算法
- 常用的STL查找算法
- C++ 之高效使用STL(查找算法的选择)
- C++ 之高效使用STL(查找算法的选择)
- C++ 之高效使用STL(查找算法的选择)
- C++ 之高效使用STL(查找算法的选择)
- 【算法】常用的查找算法之二分查找法
- Java实现的常用的查找算法
- 常用的查找与排序算法
- 常用的查找及排序算法
- 集合——Map集合
- poj 2823 Sliding Window
- 网络盛行,在QQ、MSN诞生之后,一些 新的代名词也 相继被热捧。比如:网恋、蓝颜知己、红颜知己。
- 发生的开发和第三方看得上飞机似的离开房间收到了付款就
- js 组合算法
- 常用的高效「查找」算法
- 2014 IT公司校招应届生待遇大揭秘
- DM6446编译选项
- 仿冒银行升级助手的木马分析
- flex导致浏览器对指定站点输入法无法输入中文的问题
- 守护进程
- 有格式文本控件RichTextBox(文本类控件)
- 栈
- 设置响应头的Content-Disposition属性,实现文件下载示例