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();
}
}