我寫這段代碼用於使用計數排序來排序數組的元素。該程序編譯並運行,但沒有給出正確的輸出。我期望元素按非遞減順序排序。我得到的輸出按非遞減順序排序,但值與我輸入的不一樣。我已經多次檢查了代碼,但是我無法發現錯誤。請幫忙。計數排序程序
import java.io.*;
public class Main {
public static void main(String aa[]) {
try {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(input.readLine());
int a [] = new int[t];
int c [] = new int[t];
int max = 0;
if(t<=1000000) {
for(int i = 0; i<t; i++) {
int n = Integer.parseInt(input.readLine());
if(n>=0 && n<=1000000) {
a[i] = n;
if(n>max) max = n;
}
}
int b[] = new int[max+1];
for(int i = 0; i<max+1; i++)
b[i] = 0;
for(int i = 0; i<t; i++)
b[a[i]] += 1;
for(int i = 1; i<max+1; i++)
b[i] += b[i-1];
for (int i = t-1; i>=0; i--) {
c[b[a[i]]] = a[i];
b[a[i]]--;
}
for (int i = 0; i<t; i++)
System.out.println(c[i]);
}
else
System.exit(0);
} catch (Exception e) {System.out.println(e);}
}
}
你期望什麼?它真的給了你什麼? –
嗨。要求人們發現代碼中的錯誤並不是特別有效。您應該使用調試器(或者添加打印語句)來分析問題,追蹤程序的進度,並將其與預期發生的情況進行比較。只要兩者發生分歧,那麼你就發現了你的問題。 (然後如有必要,你應該構造一個[最小測試用例](http://sscce.org)。) –
@JeroenIngelbrecht我期望元素按非遞減順序排序。我得到的輸出按非遞減順序排序,但值與我輸入的不一樣。 –