数字在排序数组中出现的次数
2015-06-15 20:39
239 查看
题目:统计一个数字在排序数组中出现的次数 列如输入排序数组{1 2 3 3 3 3 4 5}和数字3 输出4
排序数组 可以用二分查找 查找输入的数字在数组中第一次出现的位置以及最后一次出现的位置
#include <iostream>
using namespace std;
int find1(int *A, int a, int b, int num)
{
if (a > b)
return -1;
if (A[a] == num)
return a;
else
{
int mid = a + (b - a) / 2;
/*if (A[mid] >= num)
return find1(A, a, mid, num);
else
return find1(A, mid + 1, b, num);*/
if (A[mid] == num)
{
if (A[mid - 1] == num)
return find1(A, a, mid , num);
else
return mid;
}
if (A[mid] > num)
return find1(A, a, mid, num);
else
return find1(A, mid, b, num);
}
}
int find2(int *A, int a, int b, int num)
{
if (a > b)
return -1;
if (A[b] == num)
return b;
else
{
int mid = a + (b - a) / 2;
if (A[mid] == num)
{
if (A[mid + 1] == num)
return find2(A, mid + 1, b, num);
else
return mid;
}
if (A[mid]>num)
return find2(A, a, mid, num);
else
return find2(A, mid, b, num);
}
}
int main()
{
int A[] = { 1,2,2,3,3,3,3 };
int n = 7;
int a = find2(A, 0, n - 1, 3);
int b = find1(A, 0, n - 1, 3);
cout <<a-b<< endl;
return 0;
}
排序数组 可以用二分查找 查找输入的数字在数组中第一次出现的位置以及最后一次出现的位置
#include <iostream>
using namespace std;
int find1(int *A, int a, int b, int num)
{
if (a > b)
return -1;
if (A[a] == num)
return a;
else
{
int mid = a + (b - a) / 2;
/*if (A[mid] >= num)
return find1(A, a, mid, num);
else
return find1(A, mid + 1, b, num);*/
if (A[mid] == num)
{
if (A[mid - 1] == num)
return find1(A, a, mid , num);
else
return mid;
}
if (A[mid] > num)
return find1(A, a, mid, num);
else
return find1(A, mid, b, num);
}
}
int find2(int *A, int a, int b, int num)
{
if (a > b)
return -1;
if (A[b] == num)
return b;
else
{
int mid = a + (b - a) / 2;
if (A[mid] == num)
{
if (A[mid + 1] == num)
return find2(A, mid + 1, b, num);
else
return mid;
}
if (A[mid]>num)
return find2(A, a, mid, num);
else
return find2(A, mid, b, num);
}
}
int main()
{
int A[] = { 1,2,2,3,3,3,3 };
int n = 7;
int a = find2(A, 0, n - 1, 3);
int b = find1(A, 0, n - 1, 3);
cout <<a-b<< endl;
return 0;
}
相关文章推荐
- 广州本田整车销售系统技术分析(五)
- Oracle R12采购接收流程(PR-PO-RCV-AP-Payment)
- c多文件编译
- 学习RecyclerView的一些东西
- 【性能诊断】六、并发场景的性能分析(windbg案例,大量的内部异常造成CPU飙升)
- aam中的训练过程
- iOS动画:UIView动画和CALayer动画(CABasicAnimation、CAKeyframeAnimation的使用)
- oracle中rowid的用法 (全面)
- hadoop学习笔记:hadoop文件系统浅析
- “重力锁屏”软件简介
- Ibatis SqlMapclient对象
- Android的五大基本组件
- PagerSlidingTabStrip
- EntityFramework6 连接mysql数据库(code first模式)
- 使用Ghost备份/恢复操作系统
- python模块学习 hashlib
- 计算几何中的精度问题(转)
- Environment
- centos php环境搭建
- ViewPagerIndicator