登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

AP计算机众里寻他千百度,名师成就满分路

AP计算机

 
 
 

日志

 
 
关于我

大学讲师,中国首批AP计算机教师,著有中国第一套,历经五年实践证明深受学生欢迎的成功的AP计算机双语教材,2013年以93%的满分率开创了中国AP计算机成功的先河,远远超出全美26.6%的满分率,为中国AP计算机教学树立了典范,并在同年加拿大计算机竞赛中勇夺桂冠,任教学生获哥伦比亚大学,麻省理工学院,卡耐基梅隆大学,宾夕法尼亚大学,康奈尔大学,西北大学等学校录取,远程学生遍及北京、长春、南京、重庆、广州、济南, 深圳、成都、费城,洛杉矶,加州,宾州,新罕布什尔州等地,希望借此平台为信息技术的发展做出贡献!

深中CS作业:众数与其频数——深中何启提供  

2015-10-23 22:26:51|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
//第一种方法(若众数数量超过1,则只输出其中1个)
    public static int maxlength(int[] a){
        Arrays.sort(a);
        int length = 1;
        int maxlen = 1;
        int zhongshu = a[0];
        for (int i = 0; i < a.length - 1; i++){
            if (a[i] == a[i+1])
                length++;
            else{
                if (length > maxlen)
                {
                    maxlen = length;
                    zhongshu = a[i];
                }
                length = 1;
            }
        }

        System.out.println("众数是" + zhongshu);
        return maxlen;
    }
    
    
    
    public static void main(String[] args){
        int[] a = new int[20];
        for (int i = 0; i < a.length; i++){
            a[i] = (int)(Math.random() * 10 + 1);
            System.out.print(a[i] + " ");
        }
        System.out.println();
        System.out.println("The time is " + maxlength(a));
    }


//第二种方法(只输出所有数及其对应频数)
public static void main(String[] args){
int[] a = {10 , 10 , 10 , 8 , 8 , 7 , 7 , 7 , 7 , 7};
int[] frequency = new int[11];
for (int i = 0; i < a.length; i++)
frequency[a[i]]++;
for (int i = 0; i < a.length; i ++)
System.out.print(a[i] + " ");
System.out.println();
System.out.println("==============================");
for (int i = 0; i < a.length; i++)
System.out.print(frequency[a[i]] + " ");
System.out.println();
}

//修改后的版本,可以显示众数↓
public static void main(String[] args){
int[] a = {10 , 10 , 10 , 8 , 8 , 7 , 7 , 7 , 7 , 7};
int[] frequency = new int[11];
for (int i = 0; i < a.length; i++)
frequency[a[i]]++;
for (int i = 0; i < a.length; i ++)
System.out.print(a[i] + " ");
System.out.println();
System.out.println("==============================");
for (int i = 0; i < a.length; i++)
System.out.print(frequency[a[i]] + " ");
int mostfreq=0/*众数的频数*/, pos=-1/*众数*/;
for (int i = 0; i < a.length; i++){
if (frequency[i]>mostfreq){
mostfreq=frequency[i];
pos=i;
}
}
System.out.println("\n"+pos+","+mostfreq);
System.out.println();
}
//第三种方法(建立映射表,比上一种方法少占内存)深中吕沛霖提供
private static void findmost(int[] list){
int[] map=new int[list.length];
int tpos;
int pos=0;
Arrays.fill(map, 0);
for (int i=0;i<list.length;++i){
tpos=findpos(map,list[i]);
if (tpos==-1){
map[pos]=list[i];
++pos;
continue;
}
}
int[] freq=new int[pos];
Arrays.fill(freq, 0);
for (int i=0;i<list.length;++i){
++freq[findpos(map,list[i])];
}
int most=-1;
int num=0;
for (int i=0;i<freq.length;++i){
if (freq[i]>num){
num=freq[i];
most=i;
}
}
System.out.println(map[most]+","+num);
}

private static int findpos(int[] map,int n){
for (int c=0;c<map.length;++c){
if (map[c]==n) return c;
}
return -1;
}

  评论这张
 
阅读(334)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018