java - 两个数组的插入排序
问题描述
我需要实现插入排序,但我必须使用另一个名为 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
解决方案
问题是您正在创建临时数组,但您没有为任何位置分配任何值。因此,当您执行“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];
}
推荐阅读
- firebase - getRedirectResult 返回 null
- java - CopyOnWriteArrayList 类的 remove(Object o, Object[] snapshot, int index) 是如何实现的?
- webpack - Webpack 4 splitChunks 和 libraryTarget
- java - 根据异常类名抛出异常
- java - 对象递归和展平列表中的对象
- sql-server - 更改 SQL Server 数据库备份计划中的目标文件夹
- python - 将组折叠成一行熊猫数据框
- python - "Resample" a timestamp according to its frequency
- angular - Angular 模块和服务
- selenium - 执行 Selenium 显式等待时 Katalon 中的 GroovyCastException