如何在插入排序中修复此未排序的数组?

时间:2019-04-26 07:28:07

标签: java algorithm sorting

我正在创建一个插入排序,第一个正在工作并返回一个排序后的数组:

// {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}

但是另一个不是由于第二个代码中的一个问题而引起的,只需将“ element”替换为“ 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}

据我所知a [i]和元素是相同的。

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情。

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]);
   };

OR

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]);
   }