输出给定数组中每种元素出现的次数

来源:互联网 发布:火车票刷屏软件 编辑:程序博客网 时间:2024/05/21 22:24

在学习数组的时候,遇到了这个问题。思前想后得出了一种方法,后来在二女老师的提示下,又得到了另一种方法。在这里拿出来和大家分享一下


方法一上代码:


package com.december1;//5给定一个数组,要求求出数组中每种元素重复出现的次数,且打印以下效果:3出现了2次 public class CountArrayElementsTest1 {    public static void main(String[] args) {        // TODO Auto-generated method stub        // 首先定义一个数组        int[] array = { 1, 1, 3, 1, 4, 3, 6, 8, 2, 1, 4 };        // 利用每一个元素向后遍历的方法先遍历一下        // 这里for循环里的i代表的是比较数的下标        for (int i = 0; i < array.length; i++) {            // 若出现在的这个数之前已经存在,则不进行比较,这个数存在的下标范围是0~i-1(因为我当前判断的就是i下标的数在之前有没有存在)            // 定义一个标记            boolean flag = true;            for (int k = 0; k < i; k++) {                if (array[i] == array[k]) {// 若相等,则说明之前存在过,下面不进行判断计数                    flag = false;// 标记这个数存在过                    break;// 若存在退出当前for循环,进行下一个比较数的判断                }            }            // 首先判断i下标这个数在之前是否存在,若存在则不进行判断,假设不存在            if (flag) {                // 定义一个计数器                int count = 1;// 本身就算一次所以定义为1                // 代表i下标后面的所有数                for (int j = i + 1; j < array.length; j++) {                    if (array[i] == array[j]) {                        count++;// 若相等则自加                    }                }                System.out.println(array[i] + "出现的次数是:" + count);            }        }    }}

方法二上代码:


package com.december1;public class CountArrayElementTest2 {    public static void main(String[] args) {        // TODO Auto-generated method stub        // 先定义一个数组        int[] array = { 1, 4, 2, 1, 4, 5, 3, 4, 2, 8, 6, 4 };        // 定义一个标记数组        int[] array1 = new int[array.length];        // 对数组赋值        for (int i = 0; i < array1.length; i++) {            array1[i] = 1;// 这样array1中每个元素值都为1        }        // 对无序数组进行排序,因为有了顺序就可以记录每个元素出现的次数        for (int i = 0; i < array.length; i++) {            for (int j = i + 1; j < array.length; j++) {                int temp;                if (array[i] > array[j]) {                    temp = array[i];                    array[i] = array[j];                    array[j] = temp;                }            }        }        // 为了便于观察下面输出排序后的数组        for (int a1 : array) {            System.out.print(a1 + " ");        }        System.out.println();        // 对有序数组中出现过两次的做标记        for (int i = 0; i < array.length; i++) {            for (int j = 0; j < i; j++) {                if (array[i] == array[j]) {                    array[i] = 0;                    array1[j]++;                    continue;                }            }        }        // 再观察下array数组        for (int a1 : array) {            System.out.print(a1 + " ");        }        System.err.println();        for (int i = 0; i < array.length; i++) {            if (array[i] != 0) {                System.out.println(array[i] + "出现的次数是:" + array1[i]);            }        }    }}

由于本人能力有限,难免有所疏漏,烦请各路大神指正。

0 0
原创粉丝点击