多くのWebサイトでソートカウントのコードを調べました。 彼らは、累計のカウントを使用しており、さらに配列のインデックス付けを行っています。 通常の配列印刷を使用していないのはなぜですか?ソートをソートする理由累積を使用する理由
[count(origArray(i))!= 0]の[origArray(i)の数]と同様に、ループスルーカウント(origArray(i))印刷してください。
これは、カウントソートを使用する主な点はNO COMPARISONであり、私のコードでは0との比較があるためです。
このコードを参照してください:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class CountingSort {
public static void main(String... args) throws IOException {
new CountingSort().sort();
}
private void sort() throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String line;
int max = 0;
String data = "";
while ((line = reader.readLine()) != null && line.length() != 0) {
data += line;
}
String[] ip = data.split(" ");
int[] intArray = new int[ip.length];
for (int i = 0; i < ip.length; i++) {
intArray[i] = Integer.parseInt(ip[i]);
if (intArray[i] > max)
max = intArray[i];
}
int[] count = new int[max+1];
Arrays.fill(count, 0);
for (int i = 0; i < intArray.length; i++) {
++count[intArray[i]];
}
for (int i = 0; i < max; i++) {
if (count[i] != 0) {
for (int j = 0; j < count[i]; j++)
System.out.print(" " + i);
}
}
}
}
"比較しない"とは、相対的な順序を確立するためにキーが比較されないことを意味します。ちょっとした冗長性を除けば、あなたのコードには何が間違っていると思いますか? – dasblinkenlight
何も間違っていませんでした。他のサイトでは、彼らは元本の概念を使用していましたので、この実装で何か問題があると思いました。 –
どのような冗長性ですか? –