在排序数组中,找出给定数字出现的次数。比如【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;
}
拿到这道题:首先应该注意到这个是排序数组,如果再重头到尾遍历,那么就没有用到已经排序的这条性质。
下面是我的一段代码:
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;
}
相关文章推荐
- 在排序数组中,找出给定数字的出现次数.比如 [1, 2, 2, 2, 3] 中2的出现次数是3次。
- 在排序数组中,找出给定数字的出现次数,比如 [1, 2, 2, 2, 3] 中2的出现次数是3次。
- 在排序数组中,找出给定数字的出现次数 比如 [1, 2, 2, 2, 3] 中2的出现次数是3次。
- 【js实现】在排序数组中,找出给定数字的出现次数,比如 [1, 2, 2, 2, 3] 中2的出现次数是3次
- 在排序数组中,找出给定数字的出现次数
- 如何在排序数组中,找出给定数字出现的次数
- 在排序数组中,找出给定数字的出现次数
- 微软面试题:在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字的出现次数
- (算法:二分查找)在排序数组中,找出给定数字出现的次数
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字出现的次数
- 在排序数组中,找出给定数字的出现次数
- 10、在排序数组中,找出给定数字出现的次数
- [微软面试题] 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字的出现次数
- 【二分查找】在排序数组中,找出给定数字的出现次数 以及二分其他应用
- 在排序数组中,找出给定数字的出现次数
- 每日一道算法题:微软面试题:在排序数组中,找出给定数字出现的次数