Codigo Lamas

You might also like

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 5

package javaapplication3;

import java.io.*;
import java.util.Random;

/**
*
* @author GAPC27
*/
public class mier {
public void seldir(int a[]){
int com=0,cam=0;
//for (int b=1; b<=a.length; b++)
///
{
for (int i = 0; i < a.length - 1; i++) {
int men = i;
for (int j = i+1; j < a.length; j++) {
if (a[j] < a[men]){
men = j;
cam++;
}
}
int aux = a[i];
a[i] = a[men];
a[men] = aux;
com++;
}//}
System.out.println("Comparaciones: "+(com+cam)+"

Cambios: "+cam);

}
public static void main(String[] args) throws IOException {
BufferedReader entrada = new BufferedReader (new InputStreamReader(Syst
em.in));
int op = 0;
String linea="",q;
Random rnd = new Random();
int a[] = new int [1000];
// int a[] = {23,12,34,56,75,34,21,1,3,2};
int ini =0,fin = a.length-1,cam =0,com=0;
Main ordenar = new Main();
do {
System.out.println();
System.out.println("Menu SelDir\n1. Insertar\n2. Mostrar\n3.Seleccio
n directa\n4. Quicksort\n5. burbuja\n6. ShellSort\n7. Insercion directa\n8. Sali
r\ncapturar opcion: ");
op = Integer.parseInt(entrada.readLine());
switch(op){
case 1:{
for (int i=0;i<a.length;i++)

{
a[i]=(int)(rnd.nextDouble()*100.0);
linea+=a[i]+"\t";
}
}break;
case 2:{
for (int i=0;i<a.length;i++)
{
System.out.print(a[i]+"\t");
}
System.out.print("\n");
}break;
case 3:{
long start = System.currentTimeMillis();
ordenar.seldir(a);
ordenar.imprimir(a);
long end = System.currentTimeMillis();
long res = end - start;
System.out.println("Milisegundos: "+res);
start = 0;
end = 0;
res = 0;
}break;
case 4:
{long start = System.currentTimeMillis();
q = ordenar.reducerecursivo(ini, fin, a,cam,com);
System.out.println(q);
ordenar.imprimir(a);
long end = System.currentTimeMillis();
long res = end - start;
System.out.println("Milisegundos: "+res);
start = 0;
end = 0;
res = 0;
}
break;
case 5:
{
long start = System.currentTimeMillis();
ordenar.burbuja( a);
ordenar.imprimir(a);
long end = System.currentTimeMillis();
long res = end - start;
System.out.println("Milisegundos: "+res);
start = 0;
end = 0;
res = 0;
}
break;
case 6:

{
long start = System.currentTimeMillis();
ordenar.ShellSort(a);
ordenar.imprimir(a);
long end = System.currentTimeMillis();
long res = end - start;
System.out.println("Milisegundos: "+res);
start = 0;
end = 0;
res = 0;
}
break;
case 7:
{
long start = System.currentTimeMillis();
ordenar.insercionDirecta(a);
ordenar.imprimir(a);
long end = System.currentTimeMillis();
long res = end - start;
System.out.println("Milisegundos: "+res);
start = 0;
end = 0;
res = 0;
}

break;
}
}while (op!=8);
}
public void imprimir(int a[]){
for (int i = 0; i < a.length; i ++){
System.out.print(a[i] + "\t");
}
System.out.println();
}

public String reducerecursivo(int ini,int fin,int a[],int cam, int com){


int izq,der,pos,aux,band;
izq=ini;
der=fin;
pos=ini;
band=1;
while(band==1){
band = 0;
while((a[pos]<=a[der])&&(pos!=der))
{ der--;}
if(pos!=der){

cam++;
aux =a[pos];
a[pos]=a[der];
a[der]=aux;
pos=der;
while((a[pos]>=a[izq])&&(pos!=izq))
izq++;
if(pos!=izq){
cam++;
band= 1;
aux =a[pos];
a[pos]=a[izq];
a[izq]=aux;
pos=izq;

}
}com++;

if((pos-1)>ini)
reducerecursivo(ini,(pos-1),a,cam,com);
com++;
if(fin>(pos+1))
reducerecursivo((pos+1),fin,a,cam,com);
com++;
}
return "Comparaciones: "+(com+cam)+" Cambios: "+cam;
}

public void burbuja(int a[]){


int aux,j,i,com=0,cam=0,max= a.length-1;
for( i = 1; i<= max;i++)
{ for( j = max; j>=i;j--){
if(a[j-1]>a[j])
{
aux = a[j-1];
a[j-1] = a[j];
a[j]=aux;
cam++;
}
}com++;
}
System.out.println("Comparaciones: "+(com+cam)+"
}

Cambios: "+cam);

public void ShellSort(int[] v)


{
int N = v.length,com=0,cam=0;
int inter = N;
int i;
do {
inter /= 2;
for (int k = 0; k < inter; k++) {
for (i=inter+k; i<N; i+=inter) {
int j = i;
while (j-inter>=0 && v[j]<v[j-inter]) {
int tmp = v[j];
v[j] = v[j-inter];
v[j-inter] = tmp;
j -= inter;
cam++;
}
}com++;
}
} while (inter > 1);
System.out.println("Comparaciones: "+(com+cam)+"

Cambios: "+cam);

}
public void insercionDirecta(int a[]){
int aux, k, n=a.length,com=0,cam=0;
int i;
for (i=1;i<n;i++){
aux = a[i];
k=i-1;
while ((k>=0)&&(aux<a[k])){
// System.out.println("se cambio "+a[k+1]+"
a[k+1]=a[k];
k=k-1;
cam++;
}
com++;
a[k+1]=aux;
}
System.out.println("Comparaciones: "+(com+cam)+"
}

con: "+a[k]);

Cambios: "+cam);

You might also like