1
votes

Comment puis-je connaître la fréquence d'apparition d'un nombre dans un tableau

Je gère pour enregistrer une liste de nombres aléatoires dans un tableau, maintenant j'ai un tableau de 7 nombres: (3,4,6,6,10,3,5), et je veux savoir quelle est la fréquence d'apparition des nombres .

J'ai essayé avec ça, mais je sais vraiment comment faire

int size = 7
int aux [] = {3,4,6,6,10,3,5};
for(int i = 0 ; i<size; i++) {
            int cont = 0 ;
            for(int j = 0; i<size-1; j++) {
                if(aux[i] == aux[j+1]) {
                     aux[j+1] = -1;
                     cont++;
                } 
                
            }
            System.out.println("The number "+ aux[i] + " appears "+ cont + "times");
        }


1 commentaires

Triez d'abord le tableau, puis vous pouvez créer une variable qui stocke l'élément actuel et enregistre les heures de son apparition.


3 Réponses :


0
votes

create a map struct Map <Integer, Integer> avec la clé est votre élément, la valeur est l'heure d'apparition de l'élément dans le tableau.

    Map<Integer, Integer> map = new HashMap<>();
    for (int e : array){
        if (map.containsKey(e)){
            map.put(e, map.get(e) + 1);
        } else {
            map.put(e, 1);
        }
    }
    for (Map.Entry<Integer, Integer> e : map.entrySet()){
        System.out.println( e.getKey() + ": " + e.getValue());
    }


0 commentaires

0
votes

Vous pouvez essayer avec ceci:

import java.util.*;

public class ArrayCount {

    public static void main(String[] args) {
        int [] a = {3,4,6,6,10,3,5};
        int n = a.length;
        int [] tmp = new int [n];
        System.arraycopy(a, 0, tmp, 0, n); 
        int Num = 1;
        Arrays.sort(tmp);
        for(int i = 1; i < n; i ++) {
            if (tmp[i] != tmp[i-1]) {
                Num ++;
            }
        }
        int [] b1 = new int [Num];      
        int [] b2 = new int [Num];
        for (int i = 0; i < Num; i ++) {
            b2[i] = 1;
        }
        int j = 0;
        for(int i = 1; i < n; i ++) {
            if (tmp[i] == tmp[i-1]) {
                b1[j] = tmp[i];
                b2[j] ++;
            }
            else {
                j ++;
                b1[j] = tmp[i];
            }
        }
        System.out.println("The number of elements in the array: " + Num);
        System.out.println("List of different elements: " + b1);
        System.out.println("List of times of different elements: " + b2);
    }
}


0 commentaires

1
votes

Vous pouvez utiliser une carte et compter vous-même les occurrences dans une boucle:

[3, 4, 6, 6, 10, 3, 5]
3 occurs 2 times
4 occurs 1 time
5 occurs 1 time
6 occurs 2 times
10 occurs 1 time

Production:

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class Main {
    private static Map<Integer, Integer> getCounts(int[] arr) {
        Map<Integer, Integer> counts = new HashMap<>();
        for (int x : arr) {
            counts.put(x, counts.getOrDefault(x, 0) + 1);
        }
        return counts;
    }

    public static void main(String[] args) {
        int[] arr = {3, 4, 6, 6, 10, 3, 5};
        System.out.println(Arrays.toString(arr));
        Map<Integer, Integer> counts = getCounts(arr);
        for (Map.Entry<Integer, Integer> entry : counts.entrySet()) {
            System.out.printf("%d occurs %d %s\n", entry.getKey(), 
                entry.getValue(), entry.getValue() == 1 ? "time" : "times");
        }
    }
}


0 commentaires