Что я сделал неправильно в этом алгоритме сортировки слиянием в JavaJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Что я сделал неправильно в этом алгоритме сортировки слиянием в Java

Сообщение Anonymous »

Код: Выделить всё

class FirstClass {
public static void divide(int[] arr) {
if(arr.length == 1) {
return;
}

int mid = arr.length/2;

int[] leftHalf = new int[mid];
int[] rightHalf = new int[arr.length - mid];

for(int i = 0; i < mid; i++) {
leftHalf[i] = arr[i];
}
for(int i = mid; i < arr.length; i++) {
rightHalf[i - mid] = arr[i];
}

divide(leftHalf);
divide(rightHalf);

merge(arr, leftHalf, rightHalf);
}

public static void merge(int[] arr, int[] leftHalf, int[] rightHalf) {
int i = 0, j = 0, k = 0;

while(i < leftHalf.length && j < rightHalf.length) {
if(leftHalf[i] < rightHalf[j]) {
arr[k] = leftHalf[i];
i++;
} else {
arr[k] = rightHalf[j];
j++;
}
k++;
}

while(i < leftHalf.length) {
arr[k] = leftHalf[i];
k++; i++;
}

while(j < rightHalf.length) {
arr[k] = rightHalf[j];
k++; j++;
}

System.out.println(Arrays.toString(arr));
}
public static void main(String[] args) {
int[] arr = {1,3,6,8,3,0,6};

divide(arr);
}
}
Я писал этот алгоритм сортировки слиянием, который работает нормально, но печатал что-то вроде: -
[3, 6]
[1, 3, 6]
[3, 8]
[0, 6]
[0, 3, 6, 8]
[0, 1, 3, 3, 6, 6, 8]
Последним он печатает правильный отсортированный массив, но также печатает еще несколько массивов, и я не знаю, как это исправить.

Подробнее здесь: https://stackoverflow.com/questions/787 ... hm-in-java
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»