Как исправить этот несортированный массив в сортировке вставки? - PullRequest
1 голос
/ 26 апреля 2019

Я создаю сортировку вставкой, первая работает и возвращает отсортированный массив:

// {9, 8, 3, 13, 87, 12, 1, 99} the unsorted list

static int[] insertionSort(int[] a){

    for (int i = 1; i < a.length - 1; i++) {
        int element = a[i];
        int j = i - 1;
        while(j >= 0 && a[j] > element){
            a[j+1] = a[j];
            j--;
        }
        a[j+1] = element;

    }
    return a;
}

// returns {1,3,8,9,12,13,67}

, но другая не связана с одной проблемой во втором коде, просто заменив "элемент "by" a [i] ", который такой же:

// {9, 8, 3, 13, 87, 12, 1, 99} the unsorted list

static int[] insertionSort(int[] a){

    for (int i = 1; i < a.length - 1; i++) {
        int element = a[i]; // what
        int j = i - 1;
        while(j >= 0 && a[j] > a[i]){
            a[j+1] = a[j];
            j--;
        }
        a[j+1] = a[i];

    }
    return a;
}
// returns {9,9,9,13,87,87,87}

из того, что я знаю [i], и элемент тот же.

1 Ответ

0 голосов
/ 26 апреля 2019

Вы можете попробовать что-то вроде этого ..

int [] array = {9, 8, 3, 13, 87, 12, 1, 99};
   Arrays.sort(array);
   for (int i = 0; i < array.length; i++) {
   System.out.println(array[i]);
   };

ИЛИ

int [] array = {9, 8, 3, 13, 87, 12, 1, 99};
   int temp;
   for (int i = 1; i < array.length; i++) {
    for (int j = i; j > 0; j--) {
     if (array[j] < array [j - 1]) {
      temp = array[j];
      array[j] = array[j - 1];
      array[j - 1] = temp;
     }
    }
   }
   for (int i = 0; i < array.length; i++) {
     System.out.println(array[i]);
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...