Trie un tableau en fonction des comptages d'occurrences dans l'ordre croissant
Comment puis-je organiser les éléments dans un tableau basé sur le nombre d'occurrences de la valeur dans l'ordre croissant en java.
C'est ce que j'ai essayé:
int a[]={0,0,0,1,3,3,2,1,3,5,6,0};
int b=a.length;
for(int i=0;i<b;i++) {
for(int j=0;j<i;j++) {
int temp;
if( a[j]>a[i]) {
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(int r=0;r<a.length;r++) {
System.out.println(a[r]);
}
Quel résultat voulez-vous?
À construire sur le commentaire précédent: voulez-vous trier le tableau?
ce n'"basée sur le nombre"? ascendant si longueur impaire, en descendant si même longueur ou quelque chose comme ça?
Sonne comme il veut de tri basé sur le nombre de fois que les clés sont présents. Le tableau donné deviendrait alors {2,5,6,1,1,3,3,3,0,0,0,0}, car 2,5,6 sont présents une fois 1 à deux fois...
Hmmm, mon hypothèse était qu'il voulait que la liste de tri basé sur le nombre d'occurrences de chaque nombre dans la table initiale, de sorte que la sortie désirée serait {2, 1, 1, 3, 3, 3, 0, 0, 0, 0}.
{0,0,0,0,1,1,2,3,3,3,5,6}
?À construire sur le commentaire précédent: voulez-vous trier le tableau?
ce n'"basée sur le nombre"? ascendant si longueur impaire, en descendant si même longueur ou quelque chose comme ça?
Sonne comme il veut de tri basé sur le nombre de fois que les clés sont présents. Le tableau donné deviendrait alors {2,5,6,1,1,3,3,3,0,0,0,0}, car 2,5,6 sont présents une fois 1 à deux fois...
Hmmm, mon hypothèse était qu'il voulait que la liste de tri basé sur le nombre d'occurrences de chaque nombre dans la table initiale, de sorte que la sortie désirée serait {2, 1, 1, 3, 3, 3, 0, 0, 0, 0}.
OriginalL'auteur bharathi | 2012-08-07
Vous devez vous connecter pour publier un commentaire.
Voici une approche pour commencer, vous pourriez être fondée sur l'idée de garder un décompte du nombre de fois que chaque entier dans la table initiale a eu lieu dans une carte. Une fois que tous les chiffres ont été comptés, trier les cartes par ordre de valeur croissante, puis l'imprimer à la sortie de la carte:
Qui utilise un
Comparator
catégorie à comparer les valeurs dans unMap
:La définition de "travail" n'a jamais vraiment été cloué. De ce que je me rappel, cette solution ignore complètement la valeur numérique, et des sortes purement basée sur le nombre d'occurrences, de sorte
2, 5, 5, 5, 8, 8, 8
est considérée comme valide que2, 8, 8, 8, 5, 5, 5
. Il serait évidemment facile d'ajouter un deuxième niveau de tri par valeur, si désiré.Je ne parle pas du deuxième niveau de tri . Pour cette entrée ( {5,2,8,8,5,5,8} ) votre programme va donner en sortie [2, 5, 5, 5] . Essayez et exécuter votre code à l'encontre de cette entrée . Vous pouvez le vérifier.
Cela ne fonctionne pas pour de nombreuses entrées. J'ai essayé de le tester à l'encontre de mon propre jeu de données et il a échoué à produire les résultats attendus.
OriginalL'auteur Edd
Ici est un moyen efficace de le faire à l'aide de TreeMap.
OriginalL'auteur Sumit Rathi
Si vous voulez juste tri le tableau, utilisez la commande suivante:
Si vous souhaitez trier manuellement, je vous recommande de lire cette page, où vous pouvez trouver de pseudo-code pour une variété d'algorithmes de tri.
Toutefois, si vous êtes à la recherche d'un moyen pour trier le tableau selon le nombre fréquence, je vous recommande cette page. Vous auriez à l'inverse l'ordre de tri, sonce vous voulez dans l'ordre croissant.
OriginalL'auteur Baz
Ce sujet
Tableaux.trier(int[])
? De son JavaDoc:OriginalL'auteur mthmulders
OriginalL'auteur Mohammod Hossain
Essayer:
OriginalL'auteur Reimeus
Facile et optimisé.
OriginalL'auteur Harish Kumar
À l'aide de TreeMap pour stocker l'élément clé,le comte d'occurrences de la valeur et puis le tri basé sur des valeurs. Java 8 ruisseaux de faire ci-dessous un code concis et simple à comprendre
OriginalL'auteur Karthik
OriginalL'auteur Rishikaa
Le programme ci-dessous est un peu long mais simple à comprendre. L'espoir c'est ce à quoi vous vous attendiez.
OriginalL'auteur Amandeep Singh
OriginalL'auteur Shivam Garg
OriginalL'auteur Sonia Jain
Je n'aimais pas les réponses ci-dessus, donc, je suis en ajoutant ce que j'ai fait. L'idée générale est assez simple - il suffit de trier la liste par
Comparator
qui prend comme argument la valeur de hachage de la carte.Et la
FrequencyComparator
:de sortie:
OriginalL'auteur sheldonzy
OriginalL'auteur nikhil
OriginalL'auteur GurdeepBhatia
Je suis un newbie de codage, j'ai essayé ce à l'aide de "boucle". Voici mon code -
OriginalL'auteur Coder
À l'aide de la Carte,liste de tableaux et Comparateur
De sortie : 2:1 5:1 6:1 1:2 3:3 0:4
OriginalL'auteur Tejasvi Arya
Ordre croissant
//SORTIE: 5 1 1 1 2 2 2 2 6 6 6 6 6 4 4 4 4 4 4
OriginalL'auteur Sanjeev Kumar
OriginalL'auteur Kapil Bajaj
Trie un tableau en fonction de la fréquence:
OriginalL'auteur user10710965