首页 > 解决方案 > 两个数组的插入排序

问题描述

我需要实现插入排序,但我必须使用另一个名为 temp 的数组。在这个数组中,必须将起始数组的值复制到正确的位置

我试图通过一些我认为可以完成任务的修改来实现插入排序算法

public static void insertionSort(int[] a) {
    int[] temp = new int[a.length];
    for(int indice = 0; indice < a.length; indice++) {
        int key = a[indice];
        int j = indice - 1;

        while(j>=0 && a[j] > key) {
            a[j+1] = a[j];
            j = j-1;
        }
        a[j+1] = temp[j+1];
    }
}

我尝试将它与具有以下数字的数组一起使用:5、1、4、14、21、144、3 但它被打印为 0 0 0 0 0 0 0

标签: javainsertion-sort

解决方案


问题是您正在创建临时数组,但您没有为任何位置分配任何值。因此,当您执行“a[j+1] = temp[j+1];”时 该数组中没有任何内容,因此它将 0 分配给 a[j+1]。

如果我做对了, temp 必须是 a 的副本,因此您可以执行以下操作:

int[] temp = new int[a.length]; 

for (int i = 0; i < temp.length; i++) 
{ 
    temp[i] = a[i];
}

推荐阅读