您的位置:首页 > 其它

数字在排序数组中出现的次数

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: