Vous êtes sur la page 1sur 9

Esta unidad llevo por nombre mtodos de ordenamiento, en ella se describieron: El mtodo burbuja, Shell, quicksort y Radixsort.

A continuacin se muestran ejemplos solamente del mtodo burbuja y el mtodo quicksort. Adems de lo ya mencionado se presenta un ejemplo sobre Archivo de Datos. Elaboracin de un Archivo de Datos:
Similar a lo que realiza una base de datos pero menos complejo. Las opciones del men archivo permiten abrir, guardar, imprimir, exportar, etc.. Este programa es un protocolo de las operaciones ya mencionadas.
import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.io.*; public class blocknotas extends JFrame { /* Crea todos los objetos que voy a necesitar para visualizar mi Editor de Textos */ BorderLayout borderLayout1 = new BorderLayout(); JPanel panel = new JPanel(); JMenuBar barraDeMenu = new JMenuBar(); JMenu archivo = new JMenu(); JMenu editar = new JMenu(); JMenu ver = new JMenu(); JMenu buscar = new JMenu(); JMenu ayuda = new JMenu(); JTextArea areaDeTexto = new JTextArea(); JScrollPane scrollPane = new JScrollPane(); JFileChooser jfc = new JFileChooser(); /* Crea todos los SubMenus para cada Elemento(Opcion) de la barraDeMenu */ JMenuItem archivo_Nuevo = new JMenuItem(); JMenuItem archivo_Abrir = new JMenuItem(); JMenuItem archivo_Guardar = new JMenuItem(); JMenuItem archivo_GuardarComo = new JMenuItem(); JMenuItem archivo_Cerrar = new JMenuItem(); JMenuItem archivo_Salir = new JMenuItem(); JMenuItem editar_Deshacer = new JMenuItem(); JMenuItem editar_Rehacer = new JMenuItem(); JMenuItem editar_Cortar = new JMenuItem(); JMenuItem editar_Copiar = new JMenuItem(); JMenuItem editar_Pegar = new JMenuItem(); JMenuItem editar_Borrar = new JMenuItem(); JMenuItem editar_Preferencias = new JMenuItem(); JCheckBoxMenuItem ver_barraHerramientas = new JCheckBoxMenuItem();

JCheckBoxMenuItem ver_barraDeEstado = new JCheckBoxMenuItem(); JMenuItem buscar_Buscar = new JMenuItem(); JMenuItem buscar_Siguiente = new JMenuItem(); JMenuItem buscar_Anterior = new JMenuItem(); JMenuItem buscar_Ir_A_Linea = new JMenuItem(); JMenuItem ayuda_Contenido = new JMenuItem(); JMenuItem ayuda_acercaDe = new JMenuItem(); /* Constructor donde establece todas las caracteristicas del Editor de Texto */ public blocknotas() { panel.setLayout(borderLayout1); super.setTitle("HECHO POR OSVALDO APOLINAR GONZALEZ"); /* Establesco el Texto de cada elemento del Menu */ archivo.setText("Archivo"); archivo.setMnemonic('A'); archivo_Nuevo.setText("Nuevo"); archivo_Abrir.setText("Abrir"); archivo_Guardar.setText("Guardar"); archivo_GuardarComo.setText("Guardar como..."); archivo_Cerrar.setText("Cerrar"); archivo_Salir.setText("Salir"); editar.setText("Editar"); editar.setMnemonic('E'); editar_Deshacer.setText("Deshacer"); editar_Rehacer.setText("Rehacer"); editar_Cortar.setText("Cortar"); editar_Copiar.setText("Copiar"); editar_Pegar.setText("Pegar"); editar_Borrar.setText("Borrar"); editar_Preferencias.setText("Preferencias"); ver.setText("Ver"); ver.setMnemonic('V'); ver_barraHerramientas.setText("Barra de Herramientas"); ver_barraDeEstado.setText("Barra de Estado"); buscar.setText("Buscar"); buscar.setMnemonic('B'); buscar_Buscar.setText("Buscar"); buscar_Siguiente.setText("Buscar siguiente.."); buscar_Anterior.setText("Buscar Anterior.."); buscar_Ir_A_Linea.setText("Ir a Linea.."); ayuda.setText("Ayuda"); ayuda.setMnemonic('U'); ayuda_Contenido.setText("Contenido"); ayuda_acercaDe.setText("Acerca de"); /* Deshabilito las opciones de Buscar como estado incial * ya que en ningun momento se inicio una busqueda */ buscar_Siguiente.setEnabled(false); buscar_Anterior.setEnabled(false); /* Deshabilito las opciones de Editar como estado inicial * ya que en ningun momento se edito el archivo

*/ editar_Deshacer.setEnabled(false); editar_Rehacer.setEnabled(false); editar_Cortar.setEnabled(false); editar_Copiar.setEnabled(false); editar_Pegar.setEnabled(false); editar_Borrar.setEnabled(false); /* Habilito las opciones de Ver ya que al inicio de todo * editor se muestra la barra de Estado y de Herramientas */ ver_barraHerramientas.setSelected(true); ver_barraDeEstado.setSelected(true); /* Agrego todas las opciones a la barra de Menu */ barraDeMenu.add(archivo); barraDeMenu.add(editar); barraDeMenu.add(ver); barraDeMenu.add(buscar); barraDeMenu.add(ayuda); /* Agrego a las opciones los items correspondientes */ archivo.add(archivo_Nuevo); archivo.add(archivo_Abrir); archivo.add(archivo_Guardar); archivo.add(archivo_GuardarComo); archivo.add(archivo_Cerrar); archivo.add(archivo_Salir); editar.add(editar_Deshacer); editar.add(editar_Rehacer); editar.add(editar_Cortar); editar.add(editar_Copiar); editar.add(editar_Pegar); editar.add(editar_Borrar); editar.add(editar_Preferencias); ver.add(ver_barraHerramientas); ver.add(ver_barraDeEstado); buscar.add(buscar_Buscar); buscar.add(buscar_Siguiente); buscar.add(buscar_Anterior); buscar.add(buscar_Ir_A_Linea); ayuda.add(ayuda_Contenido); ayuda.add(ayuda_acercaDe); /* Una vez armado el Menu lo agrego al Frame */ this.setJMenuBar(barraDeMenu); this.getContentPane().add(panel, BorderLayout.CENTER); this.getContentPane().setPreferredSize(new Dimension(500,400)); this.getContentPane().add(scrollPane, BorderLayout.CENTER); scrollPane.getViewport().add(areaDeTexto, null); /* Eventos de Todos los Elementos del Menu */ // archivo_Nuevo = Creo un Nuevo Archivo archivo_Nuevo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { areaDeTexto.setText("");

} }); // archivo_Abrir = Abro un Archivo con FileChooser + Stream archivo_Abrir.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(e.getSource() == archivo_Abrir) { int abroArchivo = jfc.showOpenDialog(blocknotas.this); if(abroArchivo == jfc.APPROVE_OPTION) { File archivo = jfc.getSelectedFile(); FileInputStream miArchivo; int sizeArchivo = Long.valueOf(archivo.length()).intValue(); byte archivoALeer[]= new byte[sizeArchivo]; try { miArchivo = new FileInputStream(archivo.getPath()); miArchivo.read(archivoALeer); areaDeTexto.append(new String(archivoALeer)); miArchivo.close(); } catch(IOException ex) { System.out.println("Error : "+ex.getMessage()); } } areaDeTexto.setCaretPosition(areaDeTexto.getDocument().getLength()); } } }); // archivo_Guardar = Guardo el documento que estoy editando archivo_Guardar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { File archivo = jfc.getSelectedFile(); FileOutputStream miArchivo; String contenidoTexto = new String(); try { miArchivo = new FileOutputStream(archivo.getPath()); contenidoTexto = areaDeTexto.getText(); miArchivo.write(contenidoTexto.getBytes()); miArchivo.close(); } catch(IOException ex) { System.out.println("Error : "+ex.getMessage()); } } }); // archivo_GuardarComo = Guardo mediante el Documento Abierto por el FileChooser + Stream. archivo_GuardarComo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(e.getSource() == archivo_GuardarComo) { int guardoArchivo = jfc.showSaveDialog(blocknotas.this); if(guardoArchivo == jfc.APPROVE_OPTION) {

File archivo = jfc.getSelectedFile(); FileOutputStream miArchivo; String contenidoTexto = new String(); try { miArchivo = new FileOutputStream(archivo.getPath()); contenidoTexto = new String(areaDeTexto.getText()); miArchivo.write(contenidoTexto.getBytes()); miArchivo.close(); } catch(IOException ex) { System.out.println("Error : "+ex.getMessage()); } } } } }); // archivo_Cerrar = Cierro el JTextArea archivo_Cerrar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.removeAll(); borderLayout1.removeLayoutComponent(areaDeTexto); } }); // archivo_Salir = Salgo del Editor de Texto archivo_Salir.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); // editar_Cortar = Corta el texto seleccionado y lo guarda en el clipboard editar_Cortar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(e.getSource() == editar_Cortar) { areaDeTexto.cut(); } } }); // buscar_Buscar = Busco String que ingreso buscar_Buscar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // JOptionPane; } }); // ayuda_AcercaDe mi <??> ayuda_acercaDe.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String texto = "Este es mi primer programa que decidi hacer porque supuse conveniente \n para poner en practica todos 'mis conocimientos' adquiridos luego de leer el book User - Java"; JOptionPane.showMessageDialog(new JFrame(), texto, "Acerca de Rami Editor", JOptionPane.INFORMATION_MESSAGE);

} }); /* Empaqueto y muestro el Panel con su contenido */ super.pack(); super.show(); } public static void main(String argv[]) { new blocknotas(); }

Programa que realiza el mtodo de ordenamiento burbuja:


Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambindolos de posicin si estn en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten ms intercambios, lo cual significa que la lista est ordenada.
import javax.swing.*; public class burbuja1 { int i=0,j=0, aux=0; public void insertar (int x[],int n) { if(i<n){ x[i]=Integer.parseInt(JOptionPane.showInputDialog("Dame un numero")); i++;}else JOptionPane.showMessageDialog(null,"No hay espacios en el arreglo"); } public void ordenar (int x[],int n) { if(i>0){ for (int b=0; b<i; b++) { for (j=0; j<i-1; j++) { if (x[j] > x[j+1]){ aux=x[j]; x[j]=x[j+1]; x[j+1]=aux; } } } }else JOptionPane.showMessageDialog(null,"Arreglo vacio imposible ordenar"); } public void imprimir (int x[])

{ if(i>0){ String cadena="|"; for (int a=0; a<i; a++) { cadena+=(x[a] + " | "); } JOptionPane.showMessageDialog(null,cadena); }else JOptionPane.showMessageDialog(null,"No se puede mostrar el arrglo");} public static void main(String[] args) { { } int op=0; int n=Integer.parseInt(JOptionPane.showInputDialog("Tamao del vector")); int x[]= new int [n];//tamao del vector burbuja1 llama = new burbuja1();//se crea un objeto para llamar las funciones do{ op=Integer.parseInt(JOptionPane.showInputDialog("--------Ordenamiento Burbuja--------\nInserta la opcin a ejecutar\n1.-Insertar elemento\n2.-Ordenar\n3.Imprimir\n4.-Salir\n")); switch(op){ case 1:{llama.insertar(x,n); break; } case 2:{llama.ordenar(x,n); break; } case 3:{llama.imprimir(x); break; } case 4:{ break; } default: JOptionPane.showMessageDialog(null,"Opcion no valida"); } }while(op!=4);// el programa seguira mientras no se inserte un 4 }

El mtodo de ordenamiento Quicksort :


El ordenamiento rpido basado en la tcnica de divide y vencers, que permite, en promedio, ordenar n elementos en un tiempo proporcional a n log n.

La siguiente clase llama a la clase Ordenador y acomoda los elementos del vector de menor a mayor:
import javax.swing.*; public class Main { public static void main (String [] args) { int array [] = (5,7,3,4,12,6,3,7,4); Ordenador a = new Ordenador (); a.quicksort (array); } }

Clase Ordenador:
import javax.swing.*; public class Ordenador{ public int [] quicksort (int numeros []) { return quicksort (numeros,0,numeros.length-1); } public int[] quicksort (int numeros[], int izq, int der) { if (izq>=der) return numeros; int i=izq, d=der; if (izq!=der) { int pivote; int aux; pivote = izq; while (izq!=der) {imprimeArreglo (numeros); while (numeros [der]>=numeros [pivote] && izq<der) der--; while (numeros [izq]<numeros [pivote] && izq<der) izq++; if (der!=izq) { aux = numeros [der]; numeros [der]=numeros [izq]; numeros [izq]=aux;} }

if (izq==der){ quicksort (numeros,i,izq-1); quicksort (numeros,izq+1,d); } } else return numeros; return numeros; } public void imprimeArreglo (int arreglo []) { String imp=""; for (int i=0; i<arreglo.length;i++) { if (i!=arreglo.length-1) imp=imp+arreglo[i]+","; else imp=imp+arreglo[i]+""; } System.out.println(imp); } }

Vous aimerez peut-être aussi