转自:http://blog.chinaunix.net/uid-627012-id-2706170.html
众数算法 | |
a) 问题 |
众数算法 | |
a) 问题 |
c) 编程实现
众数算法: |
/** 在一个元素组成的表中,出现次数最多的元素称为众数 * 试写一个寻找众数的算法,并分析其计算复杂性。 */ public class MostNumber { final static int maxNumber = 100; /** 程序入口 */ public static void main(String args[]) { int a[] = new int[100]; int m1=0, m2=0; //初始化数组 for(int i=0; i<100; i++) { a[i] = Math.round((long)(Math.random()*100)); System.out.print(" "+a[i]); if(i%5==4) { System.out.print(" "); } } System.out.println(""); //取最小值 for(int i=0; i<100; i++) { if(a[i]<m1) { m1=a[i]; } } //取最大值 for(int i=0; i<100; i++) { if(a[i]>m2) { m2=a[i]; } } //编码核心部分; if( (m2-m1) <maxnumber &&="" ((m2-m1)="" 100)<1000) { int m[] = new int[maxNumber]; //索引数组 for(int i=0; i<100; i++) { m[a[i]-m1]++; } //求众数 int maxCount=0, index = 0; for(int i=0; i<maxnumber; i++) { if(m[i]>maxCount) { maxCount=m[i]; index = i; } } System.out.println("方法1:结果"); for(int i=0;i<100;i++) { System.out.println("Num:"+(i+m1)+" "+m[i]); } System.out.println("方法1:众数为 "+(index+m1)); } |