Programación General > Java
Ordenacion mergesort
(1/1)
kas09013:
necesito ayuda con el programa de mergesort, si se ejecuta bien pero el que deberia ir en primera posicion lo pone en la segunda y en la primera posicion pone 0, alguna idea del porque?
--- Código: Java --- import java.io.*;//Libreria De Java Para Ingresar Datos Desde Tecladoclass Mergesort1{// Nombre de La Clasepublic int mergesort (int v[], int p, int q) { // Ordena el fragmento v[p..q] del vector v if (p < q) { int k = (p+q) / 2; // pto. medio del vector mergesort (v,p,k); // Ordenando la primera mitad mergesort (v,k+1,q); // Ordenando la seguda mitad combinar(v,p,k+1,q); // uniendo las dos mitades } } private void combinar(int v[], int p, int m, int q) { int combinado[] = new int[q-p+1]; int p1 = p; int p2 = m; int p3 = 0; /* combinado[0..p3-1] : cuenta los elementos ordenados de v[p..p1-1] y v[m..p2-1] */ while (p1 < m && p2 <= q) { if (v[p1] < v[p2]) { combinado[p3] = v[p1]; p1 = p1+1; }else { combinado[p3] = v[p2]; p2 = p2+1; } p3 = p3+1; } // X: (p1 == m) / (p2 = q+1) // Dels seguents bucles, nomes un d'ells s'executara alguna vegada // Es posen els elements que resten d'una taula a combinado. while (p1 < m) { combinado[p3] = v[p1]; p1 = p1+1; p3 = p3+1; } while (p2 <= q) { combinado[p3] = v[p2]; p2 = p2+1; p3 = p3+1; } // Es copia combinado (ja esta ordenat) a v for (int i=0; i < q-p+1; i++) { v[p+i] = combinado[i]; } }
Navegación
Ir a la versión completa