c语言折半查找重复的元素代码
时间: 2023-09-16 11:07:39 浏览: 53
下面是使用C语言实现折半查找重复元素的示例代码:
```c
#include <stdio.h>
int binary_search(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) {
// 找到目标元素,向左向右扫描
int count = 1;
int i = mid - 1;
while (i >= left && arr[i] == target) {
count++;
i--;
}
i = mid + 1;
while (i <= right && arr[i] == target) {
count++;
i++;
}
return count;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
// 没有找到目标元素
return 0;
}
int main() {
int arr[] = {1, 2, 2, 3, 3, 3, 4, 4, 5, 6};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 3;
int count = binary_search(arr, n, target);
if (count > 0) {
printf("目标元素 %d 的出现次数为 %d\n", target, count);
} else {
printf("没有找到目标元素 %d\n", target);
}
return 0;
}
```
在这个示例代码中,我们首先使用折半查找算法查找目标元素的位置,如果找到了目标元素,则向左向右扫描,计算目标元素的出现次数。如果没有找到目标元素,则返回0。