[C/C++] 二分查找代码

el/2023/6/3 15:18:46

二分查找用于有序数组时间复杂度是O(logn),其中n为有序数组长度。 该函数在有序数组nums中找到target时返回target下标,找不到时返回-1。

int binary_search(vector<int> nums, int target)
{int l = 0, r = nums.size() - 1;while (l <= r){int m = (l + r) / 2;if (nums[m] == target)return m;else if (nums[m] > target)r = m - 1;elsel = m + 1;}return -1;
}

需要注意的是,在整个搜索过程中,l <= m < r,所以当 r == target 而 l == m时满足条件nums[m] < target,因此 l = m + 1,此时可能存在 l == r 的情况,如果 while (l < r) 则会退出循环,无法找到target。另外,当有序数组中存在重复元素时,无法得知返回的下标是重复元素中的哪一个元素

http://www.ngui.cc/el/414785.html

相关文章

一个电脑白痴和黑客的对话

黑客&#xff1a;我控制了你的电脑 小白&#xff1a;怎么控制的&#xff1f; 黑客&#xff1a;用木马 小白&#xff1a;。。。。。。在哪里&#xff1f;我没看不见 黑客&#xff1a;打开你的任务管理器 小白&#xff1a;。。。。。。。任务管理器在哪&#xff1f; 黑客&a…

全球最佳造句奖

全球最佳造句奖&#xff1a; 小孩问妈&#xff1a;“用ABCDEFG怎么造句&#xff1f;” 妈&#xff1a;“A呀&#xff01;这B孩子C家的呀&#xff1f;光着个脚站在D上&#xff0c;EF也不穿&#xff0c;还露着小GG&#xff01;

在狼身上值得我们学习的十大处世哲学(经典)

一、卧薪尝胆&#xff1a;狼不会为了所谓的尊严在自己弱小时攻击比自己强大的东西。      二、众狼一心&#xff1a;狼如果不得不面对比自己强大的东西&#xff0c;必群而攻之。      三、自知之明&#xff1a;狼也很想当兽王&#xff0c;但狼知道自己是狼不是老虎。…

非一般的分手信

Dear&#xff1a; I}Fv4wlZG 想向你辞去情人的职务&#xff0c; b_VWd:am oB$P6 任职一年多来&#xff0c;在岗位上我努力学习&#xff0c;克尽职守&#xff0c; ]1^F -;i vBR 对你嘘寒问暖&#xff0c;小心翼翼&#xff0c;揣测你的需要&#xff0c;满足你各方面需求…

一个让微软晕倒的中国人,绝对经典

相传&#xff0c;中国古代的茶壶工匠喜欢在献给皇上的茶壶最隐秘处刻上自己的名字&#xff0c;虽然被发现是要杀头的,但是很多人仍乐此不疲。 如今&#xff0c;微软公司中也出现了如此一幕&#xff0c;此人叫胡万进。 o!& _BKw l&kZ6lZ 胡万进从97年起便一直为微软…

MM裙子破了(爆笑!!!)

有一美媚在某it企业工作。有一天早上&#xff0c;天气特别好&#xff0c;it美眉正全神贯注的工作&#xff0c;裙子被抽屉夹住了都没有察觉。当她站起身的时候裙子“嘶啦”一声被撕破。同事们都闻声望来&#xff0c;it美眉连忙拿起身边一份it杂志遮住下面。不料&#xff0c;同事…