package hola; import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * Descripcion: * Copyright: Copyright (c) 2001 * Empresa: * @author * @version 1.0 */ public class Marco1 extends JFrame implements Runnable { JPanel contentPane; int []a={2,4,1,3,6,7,5,8,9,12,23,29,56,76,52,31,45,32,65,32,14,24,98}; int b=1,c=1; int e=0,f=0, h=0; Thread Correr; BorderLayout borderLayout1 = new BorderLayout(); /**Construir el marco*/ public Marco1() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } start(); } private void jbInit() throws Exception { //setIconImage(Toolkit.getDefaultToolkit().createImage(Marco1.class.getResource("[Icono]"))); contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(borderLayout1); this.setSize(new Dimension(600, 500)); } /**Modificado para poder salir cuando se cierra la ventana*/ protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } public void paint (Graphics g) { g.clearRect(0,0,700,600); pintar(g); } public void pintar(Graphics g) { e = 0; for(int n=0; n<a.length; n++) { h=a[n]*5; g.drawLine(0,e,h,e); e+=10; } } public void start() { if(Correr == null) { Correr=new Thread(this); Correr.start(); } } public void run() { Hola(a,0,a.length-1); repaint(); try { Correr.sleep(1000); } catch(InterruptedException e){} } void Hola(int []arr, int l, int h) { if(l>=h || l<0 || h<0) return; int k=partition(arr,l,h); Hola(arr,l,k-1); Hola(arr, k+1,h); } //otros miembros public int partition(int []arr, int l,int h) { int i=l, j=h; // se elige un elemento swap(arr,(i+j)/2, h); // el pivote se mueve a h int pe=arr[h]; while (i<j) { while(i<j && arr[i] <= pe) //a partir del lado izquierdo i++; while(i<j && arr[j] >=pe) //a partir del lado derecho j--; if(i<j) swap(arr,i++,j); //se intercambian elementos } if (i!=h) swap(arr,i,h); //elemento pivote en su lugar return (i); } public void swap(int []a, int i, int j) { int tmp =a[i]; a[i]=a[j]; a[j]=tmp; repaint(); try { Correr.sleep(100); } catch(InterruptedException e){} } }