数据结构主元素算法C语言写法
时间: 2023-08-08 14:06:04 浏览: 65
以下是主元素算法的C语言实现示例:
```c
#include <stdio.h>
int find_majority_element(int nums[], int size) {
int candidate = 0;
int count = 0;
for (int i = 0; i < size; i++) {
if (count == 0) {
candidate = nums[i];
count = 1;
} else if (nums[i] == candidate) {
count++;
} else {
count--;
}
}
count = 0;
for (int i = 0; i < size; i++) {
if (nums[i] == candidate) {
count++;
}
}
if (count > size / 2) {
return candidate;
} else {
return -1; // 没有主元素
}
}
int main() {
int nums[] = {2, 2, 1, 1, 1, 2, 2};
int size = sizeof(nums) / sizeof(nums[0]);
int majority_element = find_majority_element(nums, size);
if (majority_element != -1) {
printf("主元素是: %d\n", majority_element);
} else {
printf("没有主元素\n");
}
return 0;
}
```
在上述示例中,给定数组 `{2, 2, 1, 1, 1, 2, 2}`,算法输出主元素 `2`,因为它在数组中出现的次数超过一半。如果数组中不存在主元素,则输出 "没有主元素"。