Уважаемый сотрудник Stackoverflowers,Java: алгоритм сортировки вставки 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);
}
}
Решение:
После фиксации метод подкачки, где ИНТ [] был включен в его параметры, подкачка теперь работает! Я также отредактировал 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);
}
}
вы должны установить обмен в своем массиве. в настоящее время это не так. –
У вас это написано ** внутри вашего кода ** !!! – Idos
Возможный дубликат http://stackoverflow.com/questions/32431061/simple-swap-in-java –