gpt4 book ai didi

Java:插入排序算法交换

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:42:51 27 4
gpt4 key购买 nike

亲爱的 Stackoverflowers,

我的 swap 方法在 insertionSort 方法中不起作用;它没有交换我的数组元素。

我的插入排序算法有什么问题?

package AlgoExercises;

import java.util.Arrays;

public class InsertionSort {

static int[] numbersArray = { 5, 2, 4, 6, 1, 3 };

static void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}

static void insertionSort(int[] numbersArray) {
for (int i = 1; i < numbersArray.length - 1; i++) {
int j = i;
while ((j > 0) && (numbersArray[j] < numbersArray[j - 1])) {
swap(numbersArray[j], numbersArray[j - 1]);
j = j - 1;
System.out.println(Arrays.toString(numbersArray));
}
}
}

public static void main(String args[]) {
insertionSort(numbersArray);
}
}

解决方法:

修复了参数中包含 int[] 的 swap 方法后,swap 现在可以工作了!我还将 numbersArray.length-1 编辑为 numbersArray.length。

谢谢大家的帮助!

package AlgoExercises;

import java.util.Arrays;

public class InsertionSort {

static int[] numbersArray = { 5, 2, 4, 6, 1, 3 };

static void swap(int i, int j) {
int temp = numbersArray[j];
numbersArray[j] = numbersArray[i];
numbersArray[i] = temp;
}

static void insertionSort(int[] numbersArray) {
for (int i = 1; i < numbersArray.length; i++) {
int j = i;
while ((j > 0) && (numbersArray[j] < numbersArray[j - 1])) {
swap(j, j - 1);
j = j - 1;
System.out.println(Arrays.toString(numbersArray));
}
}
}

public static void main(String args[]) {
insertionSort(numbersArray);
}
}

最佳答案

Java 是一种按值传递的语言,因此交换传递给 swap 方法的 int 变量没有任何区别。你应该将数组本身+要交换的两个索引传递给方法,并在交换方法中修改数组。

static void swap(int[] arr, int i, int j) {
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}

并调用它

swap(numbersArray, j, j-1);

请注意,我没有检查您的插入排序实现的逻辑。此答案仅处理交换问题。

关于Java:插入排序算法交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34789729/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com