많은 웹 사이트에서 정렬 계산 코드를 검토했습니다. 그들은 누적 합계를 사용한 다음 배열 인덱싱을 사용하고 있습니다. 일반 배열 인쇄를 사용하지 않는 이유는 무엇입니까?누적 계산을 사용하는 이유는 무엇입니까?
[count (origArray (i))! = 0]에있는 origArray (i)의 수와 같이 루프 수 (origArray 및 인쇄.
카운팅 정렬을 사용하는 주된 점은 비교가없고 내 코드에서 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
아무 문제가 없습니다. 다른 사이트에서 그들은 원리금 개념을 사용 했으므로이 구현에 문제가있을 수 있다고 생각했습니다. –
중복성은 무엇입니까? –