Java教程

Java查找数组元素出现次数

在此程序中,我们有一个元素数组来计算其每个元素的出现。解决此问题的方法之一是维护一个数组来存储该数组每个元素的计数。遍历数组,并将每个元素的出现计数为频率并将其存储在另一个数组fr中。
1 2 8 3 2 2 2 5 1
在给定的数组中,1出现了两次,因此其频率为2,2出现了四次,因此频率为4,依此类推。

算法

步骤1: 初始化 arr[] = {1、2、8、3、2、2、2、5、1}。 步骤2: 创建长度和arr[]相同长度的fr[]数组。 步骤3: SET visited = -1.。 步骤4: 对于(i = 0; i < arr.length; i++),重复步骤5至步骤9 步骤5: SET count = 1 步骤6: for(j = i + 1; j < arr.length; j++)重复步骤7 步骤7: if(arr[i]==arr[j]) 然后 count++ fr[j] =visited 步骤8: if(fr[i]!=visited) 然后 fr[i]=count 步骤9: 打印" ------------" 步骤10: 打印"元素|频率" 步骤11: 打印" -------------" 步骤12: for(i = 0; i < fr.length; i++)重复步骤13 步骤13: if(fr[i]!=visited) 则 打印 arr[i] and fr[i] 步骤14: 打印" -------------"

程序:

public class Frequency {
    public static void main(String[] args) {
        //Initialize array
        int [] arr = new int [] {1, 2, 8, 3, 2, 2, 2, 5, 1};
        //Array fr will store frequencies of element
        int [] fr = new int [arr.length];
        int visited = -1;
        for(int i = 0;i <arr.length;i++){
            int count = 1;
            for(int j = i+1;j <arr.length;j++){
                if(arr[i] == arr[j]){
                    count++;
                    //To avoid counting same element again
                    fr[j] = visited;
                }
            }
            if(fr[i] != visited)
                fr[i] = count;
        }
        //Displays the frequency of each element present in array
        System.out.println("---------------------------------------");
        System.out.println(" Element | Frequency");
        System.out.println("---------------------------------------");
        for(int i = 0;i <fr.length;i++){
            if(fr[i] != visited)
                System.out.println(" " + arr[i] + " | " + fr[i]);
        }
        System.out.println("----------------------------------------");
    }
}
输出:
----------------------------------------
Element | Frequency
----------------------------------------
1 | 2
2 | 4
8 | 1
3 | 1
5 | 1
----------------------------------------
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4