求数组中出现次数超过一半的数字

来源:互联网 发布:网络暴力调查报告配图 编辑:程序博客网 时间:2024/05/22 19:10

一个数组中有一个数字的次数超过了数组的一半,求出这个字符。如:int a[]={2,3,2,2,2,2,2,5,4,1,2,3},求出超过一半的数字是2

#include<iostream>using namespace std;bool _CheckArray(int* data, int length){if ((data == NULL) && (length <= 0))return true;elsereturn false;}bool _CheckNum(int data[], int length, int num){int count = 0;for (int i = 0; i < length; i++){if (num == data[i])count++;}if (count >= (length / 2))return true;return false;}int MoreThanHalfNum(int* data, int length){if (_CheckArray(data, length))return 0;int count = 1;int num = data[0];for (int i = 1; i < length; i++){if (count == 0){num = data[i];count = 1;}else if (num == data[i])count++;elsecount--;}if (_CheckNum(data, length, num))return num;return 0;}int main(){int data[] = { 1, 2, 2, 2, 3, 2, 4, 5, 2, 2 };int length = sizeof(data) / sizeof(data[0]);cout << MoreThanHalfNum(data,length ) << endl;return 0;}



原创粉丝点击