Мой массив {8,3,5,9,2}, и я получаю {3,5,9,2}
public static void insertionsort(int[] a) {
for (int i = 1; i < a.length; i++) {
int value = a[i];
// int c=0;
for (int j = i - 1; value < a[j + 1] && j >= 0; j--) {
int temp = a[j - 1];
a[j - 1] = a[j];
a[j] = temp;
// c++;
}
}
}
Может ли кто-нибудь помочь мне разобраться в проблеме в моем коде
.
-2
Mayar
5 Окт 2018 в 16:31
1 ответ
Лучший ответ
Вы никогда не войдете во второй цикл for.
В начале i=1 j=i-1 value=3 a[j+1]=3
value < a[j + 1]
похоже на 3<3
, поэтому всегда ложно.
Попробуй это:
int n = a.length;
for (int i=1; i<n; ++i)
{
int temp = a[i];
int j = i-1;
while (j >= 0 && a[j] > temp)
{
a[j+1] = a[j];
j = j-1;
}
a[j+1] = temp;
}
0
Hülya
5 Окт 2018 в 13:51
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].