查找
—本文建立在已经完成排序的基础上
说到查找,大家都不陌生,今天我就来和大家聊一聊查找效率
一般人会使用顺序查找,即按顺序一个一个地分析
顺序查找
for(int i=0; i<n; i++)
if(a[i] == target)
{
cout << i << endl;
break;
}
但是!!!
如果这个n的大小为1亿,那么,我们平均就要做5000万次,太浪费时间了,时间复杂度大体可以看为O(n)。
注意!!!
有一种十分快捷简单的方法——二分查找!
二分查找
什么是二分查找?
二分查找其实就是一种分治的思想,把一个整体一分为二,通过比较,去掉一半,再如上去处理剩下一半。
比如说,我们原有5个数{1,2,3,4,5},这时,我要查找4,我们先找到中间的数字3,接着和4比一下,发现3<4。所以,4一定在3的右边,数组一下就去掉了左半边,得{4,5},再重复上述步骤,找到中间4,发现找到了,就结束。