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

[0] Índice de Mensajes

Ir a la versión completa