허프만 코드에 문제가 있습니다. main 메서드에서 나는 Symbols 빈도를 포함하는 Integer 배열을 입력했다. 그것은 각각의 기호와 허프만 코드를 인쇄해야합니다,하지만 난 뭔가 주에서 잘못된주파수 배열에서 허프만 코딩 (자바로)
생각 :
허프만 코드에서 이제int[] histo = new int[]{8, 65, 124, 55, 2, 1, 0, 1};
System.out.println("Codage de Huffman:");
String[] huffman = huffman(histo);
for (int i = 0; i < huffman.length; i++) {
if (histo[i] > 0) {
System.out.println(i + "] " + huffman[i]);
}
}
: 여기
public static String[] huffman(int[] histo) {
String[] codage = new String[histo.length];
int valeur1;
int valeur2;
int index1 = 0;
int index2 = 0;
for (int i = 0; i < histo.length; i++) {
codage[i] = new String();
}
do {
valeur1 = Integer.MAX_VALUE;
valeur2 = Integer.MAX_VALUE;
for (int i = 0; i < histo.length; i++) {
if (histo[i] > 0) {
if (histo[i] < valeur1) {
valeur2 = valeur1;
valeur1 = histo[index1 = i];
} else if (histo[i] < valeur2) {
valeur2 = histo[index2 = i];
}
}
}
histo[index1] = 0;
histo[index2] += valeur1;
codage[index1] = codage[index1] + "0";
codage[index2] = codage[index2] + "1";
} while (valeur2 != Integer.MAX_VALUE);
return codage;
}
출력은 다음과 같습니다
0] 0
1] 0
2] 0
3] 111101
4] 0
5] 0
7] 110
무엇이 잘못되었는지 자세히 알려주십시오. 출력이 없습니까? 잘못된 출력입니까? 예외? –
출력이 잘못되었습니다. 감사합니다 –