C语言--查询数组中出现次数最多的元素

查询数组中出现次数最多的元素

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

int max_count_num(int * arr, int len);

int main()
{
	int arr[5] = {1, 1, 1, 3, 1 };

	max_count_num(arr, 5);

	return 0;
}

int max_count_num(int * arr, int len)
{
	int i, j;
	int m;
	int count;
	//定义次数存储数组
	int * max = (int *)malloc(sizeof(int) * len);
	if (max == NULL) {
		printf("malloc failed\n");
		exit(-1);
	}
	//数组初始化
	for (i = 0; i < len; i++) {
		max[i] = 0;
	}

	//对数组中的元素进行count
	for (i = 0; i < len; i++) {
		count = 0;
		for (j = i; j < len; j++) {
			if (arr[i] == arr[j]) {
				max[i]++;
			}
		}
	}

	//取出数组中元素的最大值
	m = 0;
	for (i = 0; i < len; i++) {
		if (max[m] < max[i]) {
			m = i;
		}
	}
	printf("出现次数最多的元素为:%d, 出现次数为:%d\n", arr[m],max[m]);

	return 0;
}

原文地址:https://www.cnblogs.com/ykyk1229/p/9911734.html

时间: 2024-10-12 04:18:33

C语言--查询数组中出现次数最多的元素的相关文章

求数组中反复次数最多的元素

1.问题描写叙述 比如:数组a={2,3,1,5,5,5,5,7,8,1}.元素2.3.7.8各出现1次.1出现两次.5出现4次,则反复次数最多的元素为5. 2. 方法与思路 2.1 以空间换时间,索引法 定义一个数组int cnt[MAX],将其元素所有初始化为0.然后遍历数组a.运行cnt[a[i]]++操作.最后在cnt数组中找最大的数.相应的数即为反复次数最多的数. 代码示比例如以下: //以空间换时间,索引法 int MaxFreq_index(int a[],int n) { int

求数组中重复次数最多的元素

1.问题描述 例如:数组a={2,3,1,5,5,5,5,7,8,1},元素2.3.7.8各出现1次,1出现两次,5出现4次,则重复次数最多的元素为5. 2. 方法与思路 2.1 以空间换时间,索引法 定义一个数组int cnt[MAX],将其元素全部初始化为0.然后遍历数组a,执行cnt[a[i]]++操作.最后在cnt数组中找最大的数,对应的数即为重复次数最多的数. 代码示例如下: //以空间换时间,索引法 int MaxFreq_index(int a[],int n) { int i,j

Java实现找出数组中重复次数最多的元素以及个数

/**数组中元素重复最多的数 * @param array * @author shaobn * @param array */ public static void getMethod_4(int[] array){ Map<Integer, Integer> map = new HashMap<>(); int count = 0; int count_2 = 0; int temp = 0; for(int i=0;i<array.length;i=i+count){

查找数组中出现次数最多的元素(一次遍历)

采用阵地攻守的思想:第一个数字作为第一个士兵,守阵地:count = 1:遇到相同元素,count++;遇到不相同元素,即为敌人,同归于尽,count--:当遇到count为0的情况,又以新的i值作为守阵地的士兵,继续下去,到最后还留在阵地上的士兵,有可能是主元素.再加一次循环,记录这个士兵的个数看是否大于数组一般即可. 代码如下 public int Solution(int [] array) { int len = array.length; int count=1;//初始化第一个士兵为

寻找数组中重复次数最多的数

#include<iostream> #include<map> using namespace std; int helper(const int a[],const int n) { map<int,int> m; for(int i = 0;i<n;i++) m[a[i]]++; map<int,int>::iterator comp = m.begin(); for( map<int,int>::iterator it = comp

1152: 零起点学算法59——找出一个数组中出现次数最多的那个元素

1152: 零起点学算法59--找出一个数组中出现次数最多的那个元素 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 990  Accepted: 532[Submit][Status][Web Board] Description 找出一个数组中出现次数最多的那个元素 Input 第一行输入一个整数n(不大于20) 第二行输入n个整数 多组数据 Output 找出n个整数中出现次数最多的那个整数(

程序员面试题目总结--数组(三)【旋转数组的最小数字、旋转数组中查找指定数、两个排序数组所有元素中间值、数组中重复次数最多的数、数组中出现次数超过一半的数】

转!http://blog.csdn.net/dabusideqiang/article/details/38271661 11.求旋转数组的最小数字 题目:输入一个排好序的数组的一个旋转,输出旋转数组的最小元素. 分析:数组的旋转:把一个数组最开始的若干个元素搬到数组的末尾.例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1.这道题最直观的解法并不难.从头到尾遍历数组一次,就能找出最小的元素,时间复杂度显然是O(N).但这个思路没有利用输入数组

给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字 ,返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况)

1 """ 2 #给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字 3 #返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况) 4 解题思路: 5 1.设定一个空字典,去存储列表中的值和值出现的次数 6 2.使用L.count()方法可以统计出L中值出现的次数 7 3.使用sorted方法可以进行排序,sorted(iterable,key,reverse) 8 注意key是函数 9 4.列表中的元祖取值 d[i][j] i是哪一个元祖,j是元祖

python之Counter类:计算序列中出现次数最多的元素

Counter类:计算序列中出现次数最多的元素 1 from collections import Counter 2 3 c = Counter('abcdefaddffccef') 4 print('完整的Counter对象:', c) 5 6 a_times = c['a'] 7 print('元素a出现的次数:', a_times) 8 9 c_most = c.most_common(3) 10 print('出现次数最多的三个元素:', c_most) 11 12 times_dic