声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 6932|回复: 9

[编程技巧] 查找数组中重复最多的数及次数

[复制链接]
发表于 2008-7-30 20:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
如何把一组数中重复最多的那个数找出来?
是哪个数?一共出现多少次?
问题简单,可俺底子薄!谢谢

[ 本帖最后由 sogooda 于 2008-7-31 15:56 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-7-30 20:48 | 显示全部楼层
这组数的范围知道吗?
 楼主| 发表于 2008-7-30 20:58 | 显示全部楼层
知道,比如说-50-+50之间,数字可能是:-49,-48.-38,-25, -25,3, 6,7, 9,6, 5, 4, 3,4, 50,4, 34,23, 26,19, 12, 2,23,等找出出现频数最多的。
发表于 2008-7-30 21:30 | 显示全部楼层
不知道有没有可以直接实现此功能的命令,如果数字范围不大的话,可以自己编程实现:
(1)用max、min、length(或size)命令求出最大值、最小值以及这组数的长度;
(2)将最大值和最小值之间的数字赋给一个数组A;
(3)用for循环将这组数逐个与数组A中的数进行比较,统计每个数的个数放在另外一个数组B中(下标与数组A的相对应);
(4)用max命令求出数组B中的最大值的下标,亦即出现频数最多的数的下标,由此可得到出现频数最多的数。
此方法可能比较麻烦,算是最原始的做法吧

评分

1

查看全部评分

 楼主| 发表于 2008-7-30 21:42 | 显示全部楼层
谢谢提醒,我试着做做看,上次同样得到您的帮助,在此向你致谢!并希望后来的学弟学妹想想可能的优化方案!
发表于 2008-7-30 21:54 | 显示全部楼层
学弟学妹??!!
学哥学姐不让做?:@L老年人也是社会的一部分哦.
  1. a=[-49 -48 -38 -25  -25 3  6 7  9 6 5 4 3 4 50 4 34 23 26 19 12 2 23];
  2. [n,xout]=hist(a,sort(a));
  3. NumXout=xout(find(n==max(n)))
复制代码

[ 本帖最后由 bainhome 于 2008-7-30 21:56 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2008-7-30 22:09 | 显示全部楼层
不好意思,我1968年出生,现在真笨手笨脚在琢磨Matlab,从年龄上我应该叫学弟学妹。(我打字都是用“一阳指”)!谢谢bainhome
发表于 2008-7-30 22:34 | 显示全部楼层
哎哟,也是老年人,我还真是你学弟:lol,不过也相去不远,同病相怜, 同贺同贺:victory:
发表于 2008-7-30 22:47 | 显示全部楼层
刚才边洗衣服边想这个问题,印象中好像有简单的命令可以解决,还准备看教材呢
bainhome 前辈一来,问题就迎刃而解啦
发表于 2008-7-31 00:35 | 显示全部楼层
我也来凑个热闹:lol ,相比楼主和bainhome我也是学弟啦。貌似年龄等差数列
  1. a=[-49 -48 -38 -25  -25 3  6 7  9 6 5 4 3 4 50 4 34 23 26 19 12 2 23];
  2. [M,F]=mode(a)
复制代码

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-18 00:23 , Processed in 0.086175 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表