Site hosted by Angelfire.com: Build your free website today!

import java.awt.*;

import java.applet.*;

import java.util.*;

import Misclases.*;

///burbuja mejorada

///shakersort

///ordenamiento por seleccion

 

class hilo1 extends Thread

{

int arreglo[];

int inferior;

int aux,tamaño;

boolean intercambio = true;

hilo1(String str,int arr[],int t)

{

super(str);

arreglo=arr;

aux=0;

tamaño=t;

inferior=tamaño-2;

}

public void run()

{

int i;

while (intercambio) //continúa si hay intercambios

{

//realizar un paso de ordenación

intercambio = false;

for(i = 0; i<= inferior; i++)

if (arreglo[i] > arreglo[i+1])

{

//el par esta desordenado

aux = arreglo[i];

arreglo[i] = arreglo[i+1];

arreglo[i+1] = aux;

intercambio = true;

}

//pasada finalizada, decrementar el índice inferior

inferior--;

}

System.out.print("\nBurbuja: ");

for(i=0;i<tamaño;i++)

System.out.print(arreglo[i]+",");

}

}

class hilo2 extends Thread

{

int arreglo[];

int tamaño;

int aux;

int primero , ultimo, dir;

hilo2(String str,int arr[],int t)

{

super(str);

arreglo=arr;

tamaño=t;

ultimo=tamaño-1;

dir=tamaño-1;

primero=1;

}

public void run()

{

int j;

while (ultimo >= primero)

{

for(int i = ultimo; i >= primero; i--) // De abajo hacia arriba

if (arreglo[i-1] > arreglo[i])

{

//intercambio No. 1

aux = arreglo[i-1];

arreglo[i-1] = arreglo[i];

arreglo[i] = aux;

dir = i; // localiza la dirección del mayor de cada par

}

primero = dir + 1;

for(int i = primero; i <= ultimo; i++) // De arriba hacia abajo

if (arreglo[i-1] > arreglo[i])

{

//intercambio No. 2

aux = arreglo[i-1];

arreglo[i-1] = arreglo[i];

arreglo[i] = aux;

dir = i; // localiza la dirección del menor de cada par

}

ultimo = dir - 1;

}

System.out.print("\nBurbuja2: ");

for(j=0;j<tamaño;j++)

System.out.print(arreglo[j]+",");

}

}

class hilo3 extends Thread

{

int arreglo[];

int tam;

int indiceMin, aux,tamaño;

hilo3(String str,int arr[],int t)

{

super(str);

arreglo=arr;

aux=0;

tamaño=t;

}

public void run()

{

int i;

for (i = 0; i <= tamaño-2; i++)

{

//cada iteración del bucle es un paso

indiceMin = i;

for(int j = i+1; j <= tamaño-1; j++)

if (arreglo[indiceMin] > arreglo[j] )

indiceMin = j;

//intercambiar x[i] y x[indiceMin]

aux = arreglo[i];

arreglo[i] = arreglo[indiceMin];

arreglo[indiceMin] = aux;

}

System.out.print("\nBurbuja3: ");

for(i=0;i<tamaño;i++)

System.out.print(arreglo[i]+",");

}

}

class hilos

{

public static void main(String []args)

{

int tam,val;

System.out.print("\n Numero de elementos: ");

tam=Getdat.getInt();

int arreglo[] = new int[tam];

for(int i=0;i<tam;i++)

{

System.out.print("\n Elemento: ");

val=Getdat.getInt();

arreglo[i]=val;

}

hilo1 mi1 = new hilo1("hilo 1",arreglo,tam);

mi1.start();

hilo2 mi2 = new hilo2("hilo 2",arreglo,tam);

mi2.start();

hilo3 mi3 = new hilo3("hilo 3",arreglo,tam);

mi3.start();

}

}