帮我用c写一个代码,要求输出数组中出现次数超过一半的数字
时间: 2024-02-03 15:15:14 浏览: 69
以下一个简单的C代码,实现了查找数组中出现次数超过一半的数字:
```c
#include <stdio.h>
int main() {
int n, i, j;
printf("请输入数组的大小:");
scanf("%d", &n);
int a[n];
printf("请输入数组元素:");
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int count = 0, candidate = a[0];
for (i = 0; i < n; i++) {
if (count == 0) {
candidate = a[i];
count++;
} else {
if (candidate == a[i]) {
count++;
} else {
count--;
}
}
}
count = 0;
for (i = 0; i < n; i++) {
if (a[i] == candidate) {
count++;
}
}
if (count > n / 2) {
printf("出现次数超过一半的数字为:%d\n", candidate);
} else {
printf("无出现次数超过一半的数字!\n");
}
return 0;
}
```
该算法的时间复杂度为O(n),空间复杂度为O(1)。
阅读全文