二分查找拓展,查找指定数字第一次出现和最后出现
来源:互联网 发布:淘宝妈妈装模特 编辑:程序博客网 时间:2024/05/21 19:21
二分查找大家都知道,但是二分查找第一次出现和最后出现不一定都会,仍然使用二分的思想,并且时间复杂度还是O(logn),与普通二分不同的是,在查找到匹配数字后,并不是马上返回,继续查找,直到最后只剩下一个数字,具体代码如下:
查找最后出现:
/* * bi_search.cpp * * Created on: 2012-6-17 * Author: ict */#include <string.h>#include <stdlib.h>#include <stdio.h>#include <assert.h>int bi_search(int *a, int l, int u, int t){assert(l <= u);int m;while(l <= u){m = (l + u) >> 1;if((l + u)%2 == 1)//向上取整 ceil functionm++;if(a[m] == t && l == u)//if there is only one element and equal the targetreturn m;else{if(a[m] < t)l = m + 1;elseif(a[m] > t)u = m - 1;elseif(a[m] == t)l = m;//修改左边数字}}return -1;}int main(){int a[] = {1, 1, 1, 1, 1};printf("%d\n", bi_search(a, 0, sizeof(a) / sizeof(int) -1, 1));return 0;}
查找第一次出现:
/* * bi_search.cpp * * Created on: 2012-6-17 * Author: ict */#include <string.h>#include <stdlib.h>#include <stdio.h>#include <assert.h>int bi_search(int *a, int l, int u, int t){assert(l <= u);int m;while(l <= u){m = (l + u) >> 1; //默认是向下取整//if((l + u)%2 == 1)//向上取整 ceil function//m++;if(a[m] == t && l == u)//if there is only one element and equal the targetreturn m;else{if(a[m] < t)l = m + 1;elseif(a[m] > t)u = m - 1;elseif(a[m] == t)u = m;//修改左边数字}}return -1;}int main(){int a[] = {1, 1, 1, 1, 1};printf("%d\n", bi_search(a, 0, sizeof(a) / sizeof(int) -1, 1));return 0;}
- 二分查找拓展,查找指定数字第一次出现和最后出现
- 如何找到二分查找中目标元素第一次出现和最后一次出现的位置
- Java 查找某个数字在数组中第一次和最后一次出现的位置
- Java查找指定字符串第一次或最后一次出现的位置
- 查找指定字符串在字符串中第一次或最后一词出现的位置
- //查找,最后一次出现x
- 二分查找解决数组中出现数字的次数
- 查找顺序数组中元素第一次出现的位置(二分查找)
- 查找指定字符串出现次数
- 查找第一次出现/不出现指定对象的位置:lower_bound()与upper_bound()
- 在指定字符串中查找第一次找到所查找的字符和最后一次查找的到的字符
- 二分查找拓展
- 二分查找及拓展
- 二分查找及其拓展
- 二分元素第一次出现的位置和最后一次出现的位置
- 二分 第一次出现的位置,最后一次出现的位置
- 查找第一次只出现一次的字符
- 【二分查找】在排序数组中,找出给定数字的出现次数 以及二分其他应用
- VC 关键字 __asm
- C++为什么不叫++C
- 浏览器内核
- web技术术语初涉
- 【设计模式】简单工厂模式
- 二分查找拓展,查找指定数字第一次出现和最后出现
- 【C++面试】
- 解读makefile和source文件
- WIFI power save 模式下的数据收发
- 微软视窗驱动模型(WDM)编程指南
- 查找最长和最短单词
- Windows Driver Foundation - KMDF 内核模式驱动框架结构 全文下载
- 802.11电源管理模式
- The WiFi Roaming - How WiFi roaming works? - WiFi Roaming