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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!