再谈众数问题
2013-04-11 08:55
302 查看
前段时间发表了一篇众数问题的算法,经测试发现代码不够健壮,这里给出另外一种实现
import java.util.HashMap; import java.util.Map; import java.util.Set; public class ModeImpl { public static void main(String[] args) { int[] arr = new int[] { 1, 2, 3 ,3,5,6,4,2,6,4,5,5}; mode(arr); } public static void mode(int[] arr) { Map<Integer, Integer> temp = new HashMap<Integer, Integer>();//用于存取每个数及出现次数 for (int i = 0; i < arr.length; i++) {//实现map初始化 if (temp.get(arr[i]) != null) { temp.put(arr[i],temp.get(arr[i])+1); }else{ temp.put(arr[i],1); } } Set<Integer> keySet=temp.keySet(); int count=0,mode=arr[1]; for(Integer i:keySet){//查找众数 if(temp.get(i)>count){ mode=i; count=temp.get(i); } } System.out.print("众数是" + mode+" "); System.out.println("重数是" + count); } }