您的位置:首页 > 其它

在排序数组中,找出给定数字出现的次数。比如【1,2,2,2,3】中2的出现次数为3次

2012-12-24 21:33 316 查看
转自:http://www.cnblogs.com/qlee/archive/2011/09/16/2178873.html

拿到这道题:首先应该注意到这个是排序数组,如果再重头到尾遍历,那么就没有用到已经排序的这条性质。

下面是我的一段代码:

int sum=0;
void FindNum(int *num,int begin,int end,int t)
{
if(begin<=end)
{
int mid=(begin+end)>>1;
if(num[mid]==t)
{
sum++;
}
FindNum(num,begin,mid-1,t);
FindNum(num,mid+1,end,t);
}
}

int main()
{
int num[]={1,2,2,3,3};
FindNum(num,0,sizeof(num)/sizeof(int)-1,2);
cout<<sum<<endl;
return 0;
}

以下是原文的一段代码:

#include <iostream>

using namespace std;

void equal_range1(int a[], int len, int x)
{
int low=0, high=len-1;
int mid;
while (low<=high)
{
mid=(low+high)/2;
if (x==a[mid]) {cout << mid << endl; break;}
else if (x<mid) high=mid-1;
else low=mid+1;
}
if (low>high)
{
cout << "ûÓÐÕÒµ½" << x << endl;
}
else
{
int k=mid-1;
while (k>=0&&a[k]==x)
{
cout << k-- << endl;
}
k=mid+1;
while (k<=len-1&&a[k]==x)
{
cout << k++ << endl;
}
}
}

int main()
{
int a[] = {1,2,2,2,2,3,4};
equal_range1(a, 7, 2);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐