Мой массив {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