二分法查找有序数组中某元素个数
程序员文章站
2024-03-16 14:38:52
...
class Solution {
public:
int BinarySearch(vector<int> data, int low, int high, int k)
{
while (low<=high)
{
int m = (high + low) / 2;
if (data[m] == k)return m;
else if (data[m] < k) low = m+ 1;
else high = m - 1;
}
return -1;
}
int GetNumberOfK(vector<int> data ,int k) {
if(data.size()==0)return 0;
int len=data.size();
int KeyIndex=0;
KeyIndex=BinarySearch(data,0,len-1,k);
if(KeyIndex==-1) return 0;
int sumber=1;
int m=KeyIndex-1;
int n=KeyIndex+1;
while(m>=0&&data[m]==k)
{
m--;sumber++;
}
while(n<len&&data[n]==k)
{
n++; sumber++;
}
return sumber;
}
};
具体算法设计:二分查找找到k的所在位置,
在原数组里面分别左右对k的出现次数进行统计
上一篇: 数据结构与算法面试题
下一篇: egret常用小知识点
推荐阅读
-
二分法查找有序数组中大于等于v的第一个数
-
在一个有序(增序)数组中查找具体的某个数字n 与二分法查找算法
-
二分法查找有序数组中某元素个数
-
C在一段有序数组中判断一个数是否在这个数组中(二分查找)
-
题:编写 在有序数组中,查找某个数
-
C++将一个有序数组按顺序移动,在移动后的数组中查找一个数字
-
有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中 第几个元素的值。如果该数不在数组中,则输出“无此数”。
-
有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”——C语言
-
有15个数存放在一个数组中,输入一个数,要求查找该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。
-
有15个数按从小到大顺序存放在一个数组中,输入一个数,输出一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。