如何知道数组中出现次数最多的值是哪个?
【第一种情况】一维数组,存储的数据有10000个,为: 张三、王二、赵武、丽丽、花花、赵武、花花、王二、王二、花花、王二、王二、花花、赵武、张三、张三、王二、赵武、丽丽、花花、赵武、花花、王二、王二、花花、王二、王二、花花、赵武、张三、张三、王二、赵武、丽丽、花花、赵武、花花、王二、王二、花花、王二、王二、花花、赵武、张三、张三、王二、赵武、丽丽、花花、赵武、花花、王二、王二、花花、王二、王二、花花、赵武、张三、张三、王二、赵武、丽丽、花花、赵武、花花、王二、王二、花花、王二、王二、花花、赵武、张三、张三、王二、赵武、丽丽、花花、赵武、花花、王二、王二、花花、王二、王二、花花、赵武、张三、张三、王二、赵武、丽丽、花花、赵武、花花、王二、王二、花花、王二、王二、花花、赵武、张三…………………………………………假设出现次数最多的是王二,请问如何用AU3统计出这个结果?
【第二种情况】二维数组,存储的数据有20000个,为
1 张三
2 王二
3 李四
4 赵武
5 王二
6 宋刀
……
需要知道第二列里出现次数最多的是哪个,怎么用AU3进行统计呢? 本帖最后由 3mile 于 2011-4-2 23:46 编辑
还没有学会搜索.
这类问题回答过好几回了
http://www.autoitx.com/forum.php?mod=redirect&goto=findpost&ptid=23183&pid=281535&fromuid=7639113
还是给个源码,二维数组的统计类似.
#include <array.au3>
#include <file.au3>
local $array,$result,$time
for $i=0 to UBound($array)-1
$array[$i]="Item-"&random(1,100,1)
Next
$time=TimerInit()
$result=_array_repeat($array)
_ArrayDisplay($result,TimerDiff($time))
func _array_repeat($array)
local $o_Dic=objcreate("scripting.dictionary");创建字典项目
local $k=1,$out
for $i=0 to UBound($array)-1
if Not $o_Dic.exists($array[$i]) then ;判断KEY是否存在
$o_Dic($array[$i]);增加新Key
$o_Dic.item($array[$i])=$k;定义Item
Else
$k=$o_Dic.item($array[$i])+1;得到重复次数
$o_Dic.item($array[$i])=$k;将重复次数修改为ITEM
$out&=$array[$i]&@CRLF;已经丢弃
EndIf
Next
$a_Arr=$o_Dic.keys
$b_Arr=$o_Dic.items
if UBound($a_Arr)=UBound($b_Arr) Then
local $out_array
for $i=0 to UBound($a_Arr)-1
$out_array[$i]=$a_Arr[$i]
$out_array[$i]=$b_Arr[$i]
Next
EndIf
return $out_array;返回重复次数的二维数组,0列是数组的傎,1列是重复的次数
EndFunc
学习了,我一般都是用excel操作的 本帖最后由 netegg 于 2011-4-15 19:27 编辑
第一种情况#include<array.au3>
Local $string = '张三,王二,赵武,丽丽,花花,赵武,花花,王二,王二,花花,王二,王二,花花,赵武,张三,张三,王二,赵武,丽丽,花花,赵武,花花,王二,王二,花花,王二,王二,花花,赵武,张三,张三,王二,赵武,丽丽,花花,赵武,花花,王二,王二,花花,王二,王二,花花,赵武,张三,张三,王二,赵武,丽丽,花花,赵武,花花,王二,王二,花花,王二,王二,花花,赵武,张三,张三,王二,赵武,丽丽,花花,赵武,花花,王二,王二,花花,王二,王二,花花,赵武,张三,张三,王二,赵武,丽丽,花花,赵武,花花,王二,王二,花花,王二,王二,花花,赵武,张三,张三,王二,赵武,丽丽,花花,赵武,花花,王二,王二,花花,王二,王二,花花,赵武,张三'
Local $aR = StringSplit($string, ',', 2)
$aR1 = _arrayunique($aR)
_arraydelete($aR1, 0)
Dim $string= ''
For $i In $aR1
$string &= $i &'|'& ubound(_arrayfindall($aR, $i)) & @cr
Next
msgbox(0,0,$string)如果只要最大值需要改下...
Local $aR = StringSplit($string, ',', 2)
$aR1 = _arrayunique($aR)
_arraydelete($aR1, 0)
Dim $max= 0
For $i In $aR1
if ubound(_arrayfindall($aR, $i))> $max then
$value = $i
$max = ubound(_arrayfindall($aR, $i))
endif
Next
msgbox(0,0,$value &'|'&$max)第二种情况,用个函数先删掉一维
页:
[1]