Zdravím všechny programátory, snažil jsem se napsat MergeSort v Javě, který jsem přepsal přesně podle pseudokódu ale z nějákého důvodu mi nefunguje a vrací se pořád stejně seřazená posloupnost prvků v poli. Netušíte v čem je chyba? Děkuji
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package mergesort;
/**
*
* @author okay
*/
public class MergeSort {
private static int[] Merge(int pole[], int p, int q, int r) {
int i = p;
int j = q + 1;
int k = 0;
int[] nPole = new int[pole.length];
while (j <= q && j <= r) {
if (pole[i] <= pole[j]) {
nPole[k] = pole[i];
i++;
k++;
} else {
nPole[k] = pole[j];
j++;
k++;
}
while (i <= q) {
nPole[k] = pole[i];
i++;
k++;
}
while (j <= r) {
nPole[k] = pole[j];
j++;
k++;
}
for (i = p; i < r; i++) {
pole[i] = nPole[i];
}
}
return pole;
}
public static int[] MergeSort(int pole[], int p, int r) {
if (p < r) {
int q = (p + r) / 2;
MergeSort(pole, p, q);
MergeSort(pole, q + 1, r);
Merge(pole, p, q, r);
}
return pole;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
//int[] pole = new int[8];
int pole[] = {1, 6, 2, 9, 7, 3, 5,};
//for (int i = 0; i < 8; i++) {
// double temp = Math.random() * 8;
//int temp2 = (int) temp;
//pole[i] = temp2;
//}
int p = 0;
int r = pole.length;
int[] MergeSort = MergeSort(pole, p, r);
for (int i = 0; i < pole.length; i++) {
System.out.print(pole[i] + " ");
}
// TODO code application logic here
}
}