domingo, 30 de octubre de 2011

Ordenamiento de vectores en Java!

Bueno amigos, si están leyendo esto es que necesitan algo de ayuda para ordenar su vector, pues bueno, acá les traigo algunos de los métodos mas conocidos en Java, están compilados en Eclipse, como dije en un post anterior(Si quieren lo revisan), si tienen alguna duda o algo no duden en comentar!


import java.util.Scanner;
public class Tarea3 {
public static void main(String []args){
int n=0,opcion;
int a[]= new int[10];int b[]=new int[10];
Scanner lector = new Scanner(System.in);
do{
System.out.println("Vectores \n1.Lectura\n2.Listado\n3.Bubble sort\n4.Insertion sort.\n5.Merge sort.\n6.Quick sort.\7.Seleccion sort.\n8.Shell sort.\n9.Salir.");
opcion= lector.nextInt();
switch(opcion)
{
case 1: do{System.out.println("Total de elementos");
n=lector.nextInt();}while((n>=10)||(n<=0));
a=lectura(n);
break;
   case 2: listado(a,n);
    break;
   case 3: a=bubblesort(a,n);listado(a,n);
    break;
   case 4: a=insertion(a,n);listado(a,n);
    break;
   case 5: mergeSort(a,b,0,(n-1));listado(a,n);
    break;
   case 6: quickSort(a,0,(n-1));listado(a,n);
    break;
   case 7: seleccionDirecta(a);listado(a,n);
    break;
   case 8: shellSort(a);listado(a,n);
    break;
}
}while(opcion!=9);
}
public static int[] lectura(int x){
Scanner lector = new Scanner(System.in);int b[]= new int[x];int f;
for(int i=0;i<x;i++){
f=i+1;
System.out.println("Ingresando dato ["+f+"]");
b[i]= lector.nextInt();
}
return (b);
}
public static void listado(int[] w,int d)
{
System.out.println("El vector es: ");
for(int x:w){
System.out.print(x+"\t");
}
System.out.println();

}
public static int[] bubblesort(int[]a,int n){
for(int i=1;i<a.length;i++){
for(int j=0;j<a.length-i;j++){
if(a[j]>a[j+1]){
int aux=a[j];
a[j]=a[j+1];
a[j+1]=aux;
}
}
}
return(a);
}
public static int[] insertion(int[]a,int n){
for(int i=1;i<a.length;i++){
int aux=a[i];
int j=i-1;
while(j>=0&&aux<a[j]){
a[j+1]=a[j];
j--;
}
a[j+1]=aux;
}
return(a);
}
public static void mergeSort(int a[],int tmpArray[],int left,int right){
if(left<right){
int center=(left+right)/2;
mergeSort(a,tmpArray,left,right);
mergeSort(a,tmpArray,center+1,right);
merge(a,tmpArray,left,center+1,right);
}
}
private static void merge(int a[],int tmpArray[],int leftPos,int rightPos,int rightEnd){
int leftEnd=rightPos-1;
int tmpPos=leftPos;
int numElements=rightEnd-leftPos+1;
while(leftPos<=leftEnd&&rightPos<=rightEnd){
if(a[leftPos]<(a[rightPos]))
tmpArray[tmpPos++]=a[leftPos++];
else
tmpArray[tmpPos++]=a[rightPos++];
}
while(leftPos<=leftEnd)
tmpArray[tmpPos++]=a[leftPos++];
while(rightPos<=leftEnd)
tmpArray[tmpPos++]=a[rightPos++];
for(int i=0;i<numElements;i++,rightEnd--)
a[rightEnd]=tmpArray[rightEnd];
}
public static void quickSort(int[]a,int izq,int der){
int i=izq;
int j=der;
int pivote=a[(izq+der)/2];
do{
while(a[i]<pivote)i++;
while(a[j]>pivote)j--;
if(i<=j){
int aux=a[i];
a[i]=a[j];
a[j]=aux;
i++;
j--;
}
}while(i<=j);
if(izq<j)quickSort(a,izq,j);
if(i<der)quickSort(a,i,der);
}
public static void seleccionDirecta(int[]a){
for(int i=0;i<a.length;i++){
int menor=a[i];
int pos=i;
for(int j=i+1;j<a.length;j++){
if(a[j]<menor){
menor=a[j];
pos=j;
}
}
a[pos]=a[i];
a[i]=menor;
}
}
public static void shellSort(int a[]){
for(int gap=a.length/2;gap>0;gap=gap==2?1:(int)(gap/2.2)){
for(int i=gap;i<a.length;i++){
int tmp=a[i];
int j;
for(j=i;j>=gap&&tmp<a[j-gap];j-=gap){
a[j]=a[j-gap];
}
a[j]=tmp;
}
}
}
}

Eclipse, gran compilador.

Bueno, me toca hablarles de Eclipse, este compilador que creo yo seria uno de los mas completos para lo que Java, C/C++ se refiere, es de código libre que fue desarrollado por la Fundación Eclipse. Les recomiendo de sobre manera este compilador en especial si han de trabajar con java, la mayoría de programas que se expondrán en este blog están realizados en ese compilador, pero bueno, funcionarían en cualquier compilador que soporte Java, como se diría, todo depende al gusto del programador. También les dejo el link si les interesa bajárselo!http://www.eclipse.org/downloads/
Saludos de su amigo programador!

Los primeros pasos!

Saludos comunidad! Esta es una del primeras entradas de su amigo programador! Pues ahora empezamos con toda la actividad, vamos como todo programador por todo lo que concierne este aspecto, espero les guste este blog que esta hecho para todos los interesados en la programación en varios lenguajes :)
Tocaremos varios lenguajes, como c++, Java, y otros que necesiten mis amigos!
Saludos de su amigo programador!