好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 YiZheng 于 2019-10-28 12:56 编辑
二分查找
二分查找:能在一组经过排序的数组中快速查找数据
速度:O(log2 N)(这里用到了对数,如果想学好算法建议去看看对数)
假如你定的是2
我猜5,5>2,你要告诉我,猜大了
假如你定的是8
我猜5,5<8,你要告诉我,猜小了
开始!
我问:“是5?“
“小了“
我问:“是8?“
“你好牛逼哦“
结论:那这个数一定比5大,现在可以排除小于5的
结论:不管多大的数组,先猜中间值,可以排除一半的数字,剩下的数字,继续猜中间值,又排除一半,循环下去,直到猜到为止。 用程序实现(c++):
注释:int hight = sizeof(int) / sizeof(ary[0]) - 1;
中sizeof(int) / sizeof(ary[0])求得是数组的长度,长度减一就是数组的下标,
大可忽略如果有人是用c++的话这句话中的ary[]是函数传参传进来的,
那么他的值永远都是1,解决方法就是你要传数组的话,就别在函数里面计算长度,在函数外面计算好,再传进来 |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|