alguno tiene el codigo de Ordenacion de datos por mezcla equilibrada? es para una clase de estructura de datos, y no piensen que soy flojo, es solo que ya le heché varias horas y solo no me sale... y me estoy desesperando pues lo necesito .. y pues ya sea que me lo pasen o que me ayuden a terminarlo, la partición inicial me sale a la perfeccion, la parte de particion-fusion es la que no me sale, aki les dejo los dos codigos:
Código
import java.io.*; public class Particion_Inicial{ public Particion_Inicial(){ } } public void partiendo(){ boolean band; int aux,r; try{ r=atoi(f.readLine()); f2.println(r); f2.flush(); band=true; aux=r; String oto; while((oto=f.readLine())!=null){ r=atoi(oto); if(r>=aux){ aux=r; if(band==true){ f2.println(r); f2.flush(); } else if(band==false){ f3.println(r); f3.flush(); } } else { aux=r; if (band==true){ f3.println(r); f3.flush(); band=false; } else{ f2.println(r); f2.flush(); band=true; } } } f2.close(); f3.close(); } e.printStackTrace(); } } Particion_Inicial pi=new Particion_Inicial(); pi.partiendo(); } }
el que sigue es el del problema:
Código
import java.io.*; public class Particion_fusion{ public Particion_fusion(){ } } public void fusionando(){ int r1=0,r2=0,aux; boolean ban1,ban2,ban3; try{ ban1=true; ban2=true; ban3=true; aux=-32768; String otoA,otoB; int h=0; boolean ba=false,bb=false; while((((otoA=fa.readLine())!=null)||(ban1==false))&&(((otoB=fb.readLine())!=null)||(ban2==false))){ if(ban1==true){ ban1=false; } if(ban2==true){ ban2=false; } if(r1<r2){ if(r1>=aux){ if(ban3==true){ fc.println(r1); fc.flush(); } else{ fd.println(r1); fd.flush(); } ban1=true; aux=r1; if(ban3==true){ fc.println(r2); fc.flush(); ban3=false; } else { fd.println(r2); fd.flush(); ban3=true;//*** } ban2=true; aux=-32768; } else if(r2>=aux){ if(ban3==true){ fc.println(r2); fc.flush(); } else{ fd.println(r2); fd.flush(); } ban2=true; aux=r2; if(ban3==true){ fc.println(r1); fc.flush(); ban3=false; } else{ fd.println(r1); fd.flush(); ban3=true; } ban1=true; aux=-32768; } } } if(ban1==false){ if(ban3==true){ fc.println(r1); fc.flush(); while((otoA=fa.readLine())!=null){ //r1=atoi(otoA); fc.println(r1); fc.flush(); } } else{ fd.println(r1); fd.flush(); while((otoA=fa.readLine())!=null){ //r1=atoi(otoA); fd.println(r1); fd.flush(); } } } if(ban2==false){ if(ban3==true){ fc.println(r2); fc.flush(); while((otoB=fb.readLine())!=null){ fc.println(r2); fc.flush(); } } else{ fd.println(r1); fd.flush(); while((otoB=fb.readLine())!=null){ fd.println(r2); fd.flush(); } } } fc.close(); fd.close(); fa.close(); fb.close(); } e.printStackTrace(); } } Particion_fusion pf=new Particion_fusion(); pf.fusionando(); } }
ya ven que si le eche ganas??? ... el resultado de la primera particion me sale genial... pero el de la particion-fusion... me arroja erroneamente los datos... y pues e revisado el algoritmo 10 veces y no me sale!!! ayuda porfa!!! me base en el algoritmo que se encuentra en el libro de estructura de datos del autor cairo... aki una pagina que tiene el mismo algoritmo... http://sistemas.itlp.edu.mx/tutoriales/estructuradedatos/t712.html
espero sus respuestas... hasta pronto!