Код должен выводить отсортированный массив, но он выводит нули.Массив, выводящий нули вместо чисел
В качестве примера при запуске программы напишите «2», когда он запросит метод, а затем «5», когда он запросит счетчик и «10» «9» «2» «5» «0», когда он запрашивает предметы. Тогда вы увидите. Я следовал всем инструкциям, и я не могу найти проблему с кодом, который изменяет введенные номера в нули при выводе ...
public static void secondMethod(int[] a) {
long t1 = System.nanoTime();
int N = a.length;
int b[] = new int[N];
int c[] = new int[N];
int[] tmp;
int len = 1;
for (int i = 0; i < a.length; i++) {
a[i] = b[i];
}
while (len < N) {
int n = 0;
int i;
int j;
int ri;
int rj;
for (int k=0; k<b.length; k+=2*len){{
n=k;
i = k;
j = k+len;
if(k+len<N){
ri = k+len;
}else{
ri = N;
}
if(k+2*len<N){
rj = k+2*len;
}else{
rj = N;
}
}
while(i<ri && j<rj){
if(b[i]<b[j]){
c[n]=b[i];
i++;
n++;
}else{
c[n]=b[j];
j++;
n++;
}
}
while(i<ri){
c[n]=b[i];
i++;
n++;
}
while(j<rj){
c[n]=b[j];
j++;
n++;
}
}
len = len*2;
tmp = b;
b = c;
c = tmp;
}
for (int i = 0; i < a.length; i++) {
a[i] = b[i];
}
long t2 = System.nanoTime();
long t = t2 - t1;
System.out.println("t=" + t);
}
public static void main(String[] args) {
int nm, mtd;
Scanner sc = new Scanner(System.in);
System.out.print("method: ");
if (sc.hasNextInt())
mtd = sc.nextInt();
else {
System.out.println("input-output error");
sc.close();
return;
}
if (mtd != 1 && mtd != 2) {
System.out.println("input-output error");
sc.close();
return;
}
System.out.print("count: ");
if (sc.hasNextInt())
nm = sc.nextInt();
else {
System.out.println("input-output error");
sc.close();
return;
}
int a[] = new int[nm];
System.out.println("items: ");
for (int i = 0; i < a.length; i++) {
if (sc.hasNextInt())
a[i] = sc.nextInt();
else {
System.out.println("input-output error");
sc.close();
return;
}
}
sc.close();
if (mtd == 1) {
firstMethod(a);
System.out.println("sorted: ");
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
}
if (mtd == 2){
secondMethod(a);
System.out.println("sorted: ");
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
}
}
«Попробуйте отладить в следующий раз, это поможет». С этим советом можно легко решить 90% вопросов SO. –
Теперь он работает! Спасибо!!! –
Я не знал, что такое отладка, я буду проверять это, хотя https://www.jetbrains.com/help/idea/2016.2/tutorial-debugging-your-first-java-application.html, что парень выше дал. –