C语言--给定一个数组,其中有一个数字出现的次数超过总数的一半,请找出该数字

C语言--给定一个数组,其中有一个数字出现的次数超过总数的一半,请找出该数字_第1张图片


一.题目描述

给定一个数组,其中有一个数字出现的次数超过总数的一半,请找出该数字
例如给定一个长度为9的数组 :{1,2,3,2,4,2,5,2,2}
输出:2  (因为2出现的次数是5次,超过一半)

二.思路分析

我们可以先对数组进行从大到小,或从小到大排序,排完序后,中间的那个数字就是需要找的数字比如上面的那个数组,排完序后变为{1,2,2,2,2,2,3,4,5}那么取中间的那个数字就是2

三.完整代码

int Cmp_int(const void* vp1, const void* vp2)
{
	return *(int*)vp1 - *(int*)vp2;
}
int main()
{
	int arr[9] = { 1 ,2,3,2 ,4,2,5,2,2 };
	qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof(int), Cmp_int);
	int middle = sizeof(arr) / sizeof(arr[0]) / 2;
	printf("%d", arr[middle]);
	return 0;
}

四.运行结果

C语言--给定一个数组,其中有一个数字出现的次数超过总数的一半,请找出该数字_第2张图片

创作不易,如果喜欢的话给小编一个免费的赞以表鼓励吧

你可能感兴趣的:(C语言学习,c语言,算法,数据结构)