вставка кода сортировки перепроверить - PullRequest
0 голосов
/ 29 июня 2018

Это мой код сортировки вставки. Этот код работает, но это способ написания вставки сортировки? Я посмотрел несколько учебных пособий, но они делают это по-другому.

int thirdArray[] = { 0, 22, 1, 10, 8, 5,39 };
for (int i = 0; i < thirdArray.length - 1; i++) {
    for (int j = i + 1; j > 0; j--) {
        if (thirdArray[j] < thirdArray[j - 1]) {
            int index = thirdArray[j];
            thirdArray[j] = thirdArray[j - 1];
            thirdArray[j - 1] = index;
        }
    }
}
for (int number : thirdArray) {
    System.out.print(number + "\t");
}

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

В вашем коде вы занимаете дополнительное место для операции подкачки. Тем не менее, это правильный подход, но вы можете изменить его следующим образом

    int thirdArray[] = { 0, 22, 1, 10, 8, 5,39 };
    int key,j;
    for(int i = 1 ; i < thirdArray.length ; i++)
    {
        key = thirdArray[i];
        j = i - 1;

        while(j >=0 && key < thirdArray[j])
        {
            thirdArray[j+1] = thirdArray[j];
            j--;
        }
        arr[j+1] = key;
    }
}

В приведенном выше коде вы начинаете сравнивать с первого индекса с его предыдущим, если он меньше, перезаписать его значения (вы уже сохраняете текущее значение в ключе), в конце поместите его в правильную позицию. Мы можем гарантировать, что после сортировки все элементы слева будут отсортированы. Сортировка вставок имеет наихудшую производительность: О (n ^ 2) Наилучшая производительность: O (n). Меняя местами, мы добавляем больше сложности, чего вы можете избежать.

0 голосов
/ 29 июня 2018

С Java 7 теперь так просто делать сортировку.

  Arrays.sort(thirdArray);

Это позволит отсортировать элементы отсортированного массива.

...