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

2023-12-26 16:42:29


一.题目描述🍗

给定一个数组,其中有一个数字出现的次数超过总数的一半,请找出该数字
例如给定一个长度为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;
}

四.运行结果🍗


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

文章来源:https://blog.csdn.net/m0_75266675/article/details/135222201
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。