Pessoal o problema é o seguinte, eu tenho que usar a ordenação merge sort para ordenar um vetor, estou fazendo isso recursivamente. é uma atividade da faculdade, só que na hora de ordenar ele nao está ordenando corretamente e eu ja refiz o codigo do zero e sempre acontece a mesma coisa…
Alguém poderia me ajudar ?
package mergesort;
public class MergeSort {
public static void main(String[] args) { int vet[] = {5, 9, 8, 3, 4, 6, 2, 7}; int i = 0; int f = vet.length;
mergeSort(vet, i, f);
for (int j = 0; j < vet.length; j++) { System.out.println(vet[j]); }
}
public static void mergeSort(int[] vet, int i, int f) {
if (i < f) { int m = (i + f) / 2;
mergeSort(vet, i, m); mergeSort(vet, m + 1, f); intercala(vet, i, m, f); } }
public static void intercala(int[] vet, int i, int m, int f) { int vet2[] = new int[vet.length];
for (int j = i; j <= m; j++) { vet2[j] = vet[j]; } for (int g = m + 1; g < f; g++) { vet2[f + m - g] = vet[g]; } int x = i; int z = f - 1;
for (int k = i; k < f; k++) {
if (vet2[x] <= vet2[z]) {
vet[k] = vet2[x]; x = x + 1; } else { vet[k] = vet2[z]; z = z - 1; } } }}