郑州游戏学院—陈跃峰老师的博客

人生难得几回博,来,让我们博一把

陈跃峰ID:Mailbomb
737004次访问,排名46好友100人,关注者333
努力学习,努力工作
Mailbomb的文章
原创 283 篇
翻译 12 篇
转载 11 篇
评论 1272 篇
陈跃峰的公告
陈跃峰 个人简历
cqucyf@gmail.com

本BLOG中文章,未经允许严禁用于商业目的!

本人编写的J2ME基础入门书籍: 《新编J2ME就业培训教程》,购买
dearbook
华储网
当当网
Chinapub
最近评论
tomoyasuzuki:一直都希望看到一些通俗能懂的编程文章。
现在终于看到了,谢谢!!
guoruochen2008:辛苦了!
期待!
guoruochen2008:辛苦了!
期待!
geforcesdn:好!!!
其实程序中除了一些分隔符号,如空格、括号和标点符号以外,只有三类名称:
l 关键字
l 系统功能名称
如System.out.println中的System、out和println。
l 标识符
verme:up
文章分类
收藏
    相册
    J2ME技术
    J2ME开发网
    无线空间
    Java网站
    Eclipse官方网站
    Java世纪网
    Sun中国
    Sun官方网站
    常用网站
    Chinabyte
    Google搜索引擎
    华军软件园
    新浪新闻
    网上书店
    ITbook
    互动出版网
    当当书店
    第二书店
    我工作过的地方
    上海托普信息技术学院
    游戏学院南京校区
    游戏学院郑州校区
    电脑报
    友情链接
    acqy的专栏
    eiyaa的专栏
    上海求职客栈
    刀剑啸的专栏
    刘军的BLOG
    王新钢的BLOG
    贝壳鱼(k7sem)专栏
    骄傲的猫
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Java编程那些事儿47—数组使用示例3收藏

    新一篇: Java编程那些事儿48—多维数组基础 | 旧一篇: Java编程那些事儿46—数组使用示例2

     
    Java编程那些事儿47—数组使用示例3
    郑州游戏学院 陈跃峰
    6.3.7 数字统计
             要求:统计一个整数中出现最多的数字。如果数字个数一样,则以最大的数字为准,例如1输出1,121输出1,23231输出3。
             该题是一个综合的题目,在实际分析时可以分解成三个问题:1、把整数中的每个数字拆分出来,2、统计拆分出的数字中0-9每个的个数,3、获得数字个数的最大值。
             实现思路:
    1、 拆分数字:整数和10取余可以获得该整数的个位值,然后用该整数除以10可以去掉个位(整数除法),按照这种结构实现循环,并把拆分出的数字(也就是余数)存储到数组中。
    2、 统计数字:声明一个长度是10的整型数组,使用这个数组中的第一个元素保存数字0出现的次数,第二个元素保存数字1出现的次数,依次类推。使用循环实现数字个数的统计。
    3、 获得最大值对应的数字:获得个数数组中最大值的下标,就是需要的数字。
    则实现的代码如下:
                      int m = 1232312;
                       int[] n = new int[10]; //存储拆分后的数字
                       int num = 0; //存储拆分出的数字个数
                       while(m != 0){ //未拆分完
                                n[num] = m % 10;   //获得个位数字
                                num++;             //拆分出的数字个数加1
                                m /= 10;           //去掉拆分出的数字
                       }
                       int[] count = new int[10]; //存储0-9数字出现的次数
                       //统计数字出现的次数
                       for(int i = 0;i < num;i++){
                                count[n[i]]++;
                       }
                       //获得最大值的下标
                       int index = 0;
                       for(int i = 0;i < count.length;i++){
                                if(count[index] <= count[i]){
                                         index = i;
                                }
                       }
                       //输出
                       System.out.println(index);
    在该代码中,拆分的十进制的数字,首先拆分出个位,并存储到n数组中,然后通过除10去掉拆分出的数字,继续执行循环,一直运算到m为0时为止,变量num保存拆分出的数字的个数。使用数组count记忆0-9每个数字出现的次数,count[0]存储0出现的次数,count[1]存储1出现的次数,依次类推,所以当n[i]的值为几时,只需要count[n[i]]增加1即可。最后使用循环获得最大数字的下标,适用<=进行比较,可以保证当个数相同时取后续的数字,这样就可以通过循环获得最大数值的下标,按照数组count的结构,数组的下标和就是数字的值。
    6.3.8 数组编码
             要求:设有一数组A,长度是N,内部的数据是0到N-1之间的所有数字,例如当N等于5时,数组为:A={0,3,2,1,4}。针对A数组,有一个对应的编码数组B,B的长度和A的长度相等,规定数组B中元素的值规定如下:
    a、 B[0]的值为0
    b、 B[i]的值是A数组中A[i]以前的值中比A[i]小的元素的个数。
    c、 例如示例中A数组{0,3,2,1,4}对应的编码数组B的值为{0,1,1,1,4}。
    现在已知A数组,编码代码计算对应的编码数组B。
    该题是一个基本的数组变换题目,只要熟悉了题目的要求以后,按照题目的要求求解对应的数组B即可。
    实现思路:初始化一个长度和A数组一样的B数组,初始化第一个元素的值为0,循环统计比A[i]元素小的数字个数,把个数值赋值给对应的B[i]即可。
    则实现的代码如下:
             int[] A = {0,3,2,1,4};
             int[] B = new int[A.length];
             B[0] = 0; //初始化第一个元素,可选
             for(int i = 1;i < A.length;i++){
                      int count = 0; //计数变量
                      //统计小于A[i]元素的数量
                      for(int j = i - 1;j >= 0;j--){
                                if(A[j] < A[i]){
                                         count++;
                                }
                      }
                      B[i] = count;   //赋值
             }
    该代码中,按照数组B中值的规定,统计A[i]以前比A[i]小的元素个数,然后把得到的结果赋值给B[i]即完成题目的要求。
    6.3.9 数组排序
             要求:将数组中的元素按照从小到大的顺序(升序)进行排列。
             数组的排序是实现很多数组操作的基础,在实际使用时也有很多的排序方法,这里以冒泡排序为例来说明数组的排序算法。
             实现思路:每次排序一个元素,总的排序次数是数组的长度减1次。第一次时,首先比较第一个和第二个元素,如果第一个元素比第二个元素大,则交换这两个元素的值,然后比较第二个和第三个元素,如果第二个比第三个大则交换,依次类推,这样当第一次交换完成以后,数组中的最后一个元素一定是数组中最大的元素。第二次时,只比较数组的前长度减一个元素,比较步骤和第一次相同,依次类推,每次都少比较一个元素,最终获得的就是排序完成的数组。
             则实现的代码如下:
                       int[] m = {2,10,3,4,2};
                       for(int i = 0;i < m.length - 1;i++){ //排序次数
                                //两两比较,实现排序
                                for(int j = 0;j < m.length - 1 - i;j++){
                                         if(m[j] > m[j + 1]){
                                                   //交换
                                                   int temp = m[j];
                                                   m[j] = m[j + 1];
                                                   m[j + 1] = temp;
                                         }
                                }
                       }
                       //输出排序后的元素
                       for(int i = 0;i < m.length;i++){
                                System.out.println(m[i]);
                       }
             冒泡排序通过数组中元素的两两比较和交换,实现数组中元素的排序。其中循环变量为i的循环代表排序的次数,总的排序次数是数组的长度减1次。内部的循环变量为j的循环实现未排序元素的两两比较,其中循环条件可以保证i增加1,内部比较的元素减少1,这个在功能上就是不比较排过序的元素。

    发表于 @ 2008年06月25日 15:56:20|评论(loading...)|收藏

    新一篇: Java编程那些事儿48—多维数组基础 | 旧一篇: Java编程那些事儿46—数组使用示例2

    评论

    #bullshit 发表于2008-06-26 10:42:59  IP: 202.22.248.*
    //统计数字出现的次数
    for(int i = 0;i < num;i++){
    count[n[i]]++;
    }
    #a13323778446 发表于2008-06-26 11:09:37  IP: 221.233.71.*
    牛x!
    #bullshit 发表于2008-06-26 11:10:43  IP: 202.22.248.*
    这一段很经典。
    #manlianx12 发表于2008-06-26 11:46:16  IP: 218.2.13.*
    大师啊
    #FlyHigherJava 发表于2008-06-26 16:07:17  IP: 211.142.27.*
    再次追看!
    #friendKnight 发表于2008-06-26 18:59:21  IP: 220.169.86.*
    写的还好咯
    不过没有体现出java的特性
    跟c没有什么区别
    2008-06-26 23:37:12作者回复
    这部分还没涉及到面向对象。
    #qiufangyunyun1314 发表于2008-06-27 09:33:48  IP: 61.144.207.*
    count[index] <= count[i])
    =号容易忘记
    #qiufangyunyun1314 发表于2008-06-27 09:36:28  IP: 61.144.207.*
    count[index] <= count[i])
    =号容易忘记
    #WBStudy 发表于2008-06-27 10:55:49  IP: 123.138.237.*
    经典
    #Lxm830 发表于2008-06-27 20:36:22  IP: 202.105.96.*
    哈哈,接见,接见 呀
    #GProgrammer 发表于2008-06-28 17:48:04  IP: 222.35.85.*
    真的是写得非常好,比教材还要简单易懂.
    #sharplover 发表于2008-06-28 19:46:29  IP: 221.1.223.*
    谢谢哈
    #javatfm 发表于2008-06-29 14:38:50  IP: 220.169.166.*
    老师
    count[n[i]]++;
    这个等价式是什么啊,没看懂啊,
    #JavaDer 发表于2008-06-30 11:25:33  IP: 59.151.58.*
    for(int i = 0;i < num;i++){
    count[n[i]]++;
    }
    #muyuqian 发表于2008-07-10 16:58:17  IP: 220.178.19.*
    for(int i = 0;i < num;i++){
    count[n[i]]++;

    ------------------------------------------------------
    原来数据还可以这样用呀.历害.
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 陈跃峰