Java
Я пытаюсь написать алгоритм сортировки слиянием, чтобы отсортировать список настраиваемых объектов в алфавитном порядке, теперь я смотрю на свой код и псевдокод на пару часов и еще не выяснил, почему он не работает,
Возможно, некоторые fre sh глаза могут помочь,
Мой код выглядит следующим образом ...
/**
* Merge Sort Algorithm
* @param array array to sort
* @param i - point to start sorting at
* @param j - point to end sorting at
*/
public void MergeSort(Movie[] array, int i, int j) {
if(i < j){
int m = (i+j)/2;
MergeSort(array, i, m);
MergeSort(array, m+1, j);
merge(array,m);
}
}
void merge(Movie[] array, int m){
int p = 0;
int q = m+1;
int r = 0;
int j = array.length-1;
Movie[] temp = new Movie[array.length];
while(p <= m && q <= j){
if(array[p].compareTo(array[q]) == 1){
temp[r++] = array[p++];
}else{
temp[r++] = array[q++];
}
}
while (p <= m){
temp[r++] = array[p++];
}
while (q <= j){
temp[r++] = array[q++];
}
System.arraycopy(temp,0,array,0,temp.length);
}
При тестировании на случаях «a, b, c, d, e, h, y, z» результат будет следующим ...
a |
b |
d |
e |
h |
c |
y |
z |
Очевидно это не в алфавитном порядке, просто не могу понять, почему