Cual es el Metodo de la sacudida
Suemi Galeana NavaApuntes24 de Septiembre de 2015
7.221 Palabras (29 Páginas)169 Visitas
[pic 1]
ESTRUCTURAS DE DATOS II
Método de la Sacudida (ShakerSort)
[pic 2][pic 3]
[pic 4]
//Metodo de la sacudida ( ShakerSort )
//Forma Ascendente y Descendente mediante ingreso de datos (Scanner)
package metodosacudida;
import java.util.Scanner;
public class MetodoSacudida {
public static int Izquierda,Derecha,Ultimo;//Declaro mis variables globales
public static void FormaOriginal(int a[]){
System.out.println("DESORDEN DE LOS ELEMENTOS");
for (int i = 0; i < a.length;i++){
System.out.print(a[i]+ " ");
}
System.out.println(" ");
}
public static void Asendente(int a[]){
System.out.println("ORDENADO DE FORMA ASCENDENTE");
do {
for (int i = a.length - 1; i > 0 ;i--){
if (a[i - 1] > a[i] ){
int aux = a[i]; //variable auxiliar para
a[i] = a[i - 1];// poder hacer intercambio
a[i - 1] = aux; // de posicion
Ultimo= 1 ;
}
}
Izquierda = Ultimo + 1;
for (int j = 1; j < a.length;j++){
if (a[j - 1] > a[j] ){
int aux = a[j]; //variable auxiliar para
a[j] = a[j - 1];// poder hacer intercambio
a[j - 1] = aux; // de posicion
Ultimo = j ;
}
}
Derecha = Ultimo - 1;
}while (Derecha >= Izquierda );
for (int i = 0; i < a.length ;i++){
System.out.print(a[i] + " ");
}
System.out.println();
}
public static void Desendente(int a[]){
Izquierda = a.length;
Derecha = 1;
Ultimo = a.length - 1 ;
System.out.println("ORDENADO DE FORMA DESCENDENTE");
do {
for (int i = a.length - 1; i > 0 ;i--){
if (a[i - 1] < a[i] ){
int aux = a [i]; //variable auxiliar para
a[i] = a[i - 1];// poder hacer intercambio
a[i - 1] = aux; // de posicion
Ultimo= 1 ;
}
}
Derecha = Ultimo + 1;
for (int j = 1; j < a.length;j++){
if (a [j - 1] < a [j] ){
int aux = a [j]; //variable auxiliar para
a [j] = a [j - 1];// poder hacer intercambio
a[j - 1] = aux; // de posicion
Ultimo = j ;
}
}
Izquierda = Ultimo - 1;
}while (Derecha <= Izquierda );
for (int i = 0; i < a.length ;i++){
System.out.print(a[i] + " ");
}
}
public static void Pasadas (int a [] ){
int aux,k,j,i;
int pasadas=0,comp=0,cambios=0 ;
for (i=0;i
{
pasadas++;
for (j=0;j
{
comp++;
if (a[j]>a[j+1])
{
cambios++;
aux=a[j];
a[j]=a[j+1];
a[j+1]=aux;
}
}
//muestra contenido pasadas
System.out.println("\n\nContenido del arreglo pasada No. "+pasadas+" ...\n");
for (k=0;k
System.out.print("arreglo["+k+"] = "+a[k]+'\t');
}
System.out.println("\n\n Pasadas: "+pasadas+" Comparaciones: "+comp+" Cambios: "+cambios);
}
public static void Ran_Dom(int a []){
int max=1000;
int min=-1000;
for(int i=0;i
{
a[i]=(int)(Math.random()*(max - min) + min) ;
//System.out.println("Arreglo: "+a[i]+ "\n");
System.out.print("arreglo["+(i)+"]:"+ a[i] );
}
}
public static void main(String[] args) {
Scanner entrada = new Scanner (System.in);//creo un nuevo objeto Scanner para que almacene datos del usuario
MetodoSacudida objeto = null;
String menu;
menu = "1.-Elegir tamaño del Arreglo y/o Vector\n"
+"2.-Random\n"
+"3.-salir\n";
int opcion;
System.out.println(menu);
System.out.println("¿Que es lo que quiere hacer?");
opcion = entrada.nextInt();
switch (opcion){
case 1:
int arreglo[] = null ;
...