J'essaie de trier une liste de caractères et de les sortir par ordre de fréquence avec la fréquence associée. Par exemple, si l'utilisateur met en "beeeerr", je veux qu'il eteint "e fréq: 4, r Freq: 2, b Freq: 1"Java: Trier une liste de caractères par fréquence uniquement à l'aide de tableaux
Voici ce que j'ai jusqu'à présent:
public static void sort(String charInput) {
int frequency = 0;
char [] charArray = charInput.toCharArray();
for (char charValue = ' '; charValue <= '~'; charValue++) {
frequency = 0;
for (int i = 0; i < charInput.length(); i++) {
char compare = charArray[i];
//charInput.charAt(i)
if (compare == charValue) {
frequency += 1;
}
}
if (frequency > 0) {
System.out.println(charValue + " freq: " + frequency);
}
}
}
Le problème avec ceci est qu'il sort les fréquences dans l'ordre alphabétique. Je ne peux pas comprendre comment trier les sorties par leur fréquence. Je sais comment faire facilement cela avec des Hashmaps ou des Arraylists, mais je ne suis pas autorisé à les utiliser. Toute aide serait appréciée
Java utilise Unicode. La question a une gamme d'intérêt de '' à ''. Les 128 caractères auxquels vous faites référence sont le bloc [C0 Controls and Basic Latin] (http://www.unicode.org/charts/nameslist/index.html) et le 256 ajoute le bloc C1 Controls et Latin-1 Supplement. Mentionner ASCII provoque la confusion, et Extended ASCII-bien, c'est tellement imprécis qu'ils ne sont guère utiles. Dans le contexte d'Unicode, vous devez avoir voulu dire ISO 8859-1. Est-ce qu'il est beaucoup plus facile de gérer String, Character et char comme le décrit la [documentation Java] (https://docs.oracle.com/javase/8/docs/api/java/lang/Character.html)? –
Merci pour votre correction. Pour ce problème, vous pouvez simplement modifier 128 au nombre de caractères dans un ensemble Unicode. – taobupt