2012-01-19 15 views
5

Se supone que debo crear una matriz y ordenar los números del más pequeño al más grande. Esto es lo que tengo hasta ahora:Clasificar matriz desde la más pequeña a la más grande usando Java

public class bubbleSort { 

public static void sort (int [] arrayName){ 
    int temp; 
    for (int i = 0; i < arrayName.length-1; i++) 
    { 
     if(arrayName[i] > arrayName[i+1]) 
     { 
      temp=arrayName[i]; 
      arrayName[i]=arrayName[i+1]; 
      arrayName[i+1]=temp; 
      i=-1; 
     } 
    } 
} 

public static void main(String[] args) { 
    int [] arrayName = new int[10]; 
    for (int i = 0; i < arrayName.length; i++) { 
     arrayName[i] = (int)(Math.random()*100); 
    } 

    System.out.println(sort(arrayName)); 
} 
} 

Me aparece un error en la última línea donde intento imprimirlo. ¿Qué estoy haciendo mal?

+1

lo que es el error que está recibiendo? – kosa

+1

Su 'función' de clasificación no devuelve nada – Dan

Respuesta

15

Su método sort(int[] array) no devuelve nada. Es nulo, por lo tanto, no puede imprimir su devolución.

+0

Sugiero ejecutar a través de arrayName con un for-loop e imprimir cada índice. – Alex

+0

Ah, entonces necesito cambiarlo a int en lugar de nulo. ¿Cómo obtengo que devuelva todos los números de la matriz como opuestos a solo el valor en temp o algún otro valor individual? – Brett

+0

La forma en que la tiene está bien, su variable arrayName ahora está ordenada. Solo necesita revisar sus valores ahora e imprimirlos :) – Alex

3

Necesita iterar sobre la matriz e imprimir cada valor. No puede simplemente imprimirln (<array>). En su lugar, intente:

// sort the array 
sort(arrayName); 
for(int sortedValue : arrayName) 
    System.out.println(sortedValue); 

Eso iterará sobre cada elemento de la matriz e imprimirá.

También puede usar el método commons-lang's ArrayUtils.toString() para hacer esto automáticamente para usted, pero estoy asumiendo que ya que esta es una tarea, no puede usar librerías externas para hacer su trabajo por usted.

0

Necesita cambiar su método de clasificación - no devuelve nada.

public static void es un método en el que no devuelve nada. Prueba esto:

public static int sort (int[] arrayname) 
0
public static int[ ] arraySortUp(int[ ] intArray) 
{ 
     int toSwap, indexOfSmallest = 0; 
     int i, j, smallest; 

     for(i = 0; i < intArray.length; i ++) 
     {    

      smallest = Integer.MAX_VALUE; 

      for(j = i; j < intArray.length; j ++) 
      { 
       if(intArray[ j ] < smallest) 
       { 
        smallest = intArray[ j ]; 
        indexOfSmallest = j; 
       }     
      } 

      toSwap = intArray[ i ]; 
      intArray[ i ] = smallest; 
      intArray[ indexOfSmallest ] = toSwap; 
     } 

     return intArray; 
}  
1

Para aprender propósito de escribir su propia función de clasificación está muy bien, pero para el código de producción siempre uso API Java Arrays.sort

2

Tal vez se puede utilizar lambdaj (download here, website), este biblioteca es muy potente para la gestión de colecciones (..list, matrices), el siguiente código es muy simple y funciona perfectamente:

import static ch.lambdaj.Lambda.on; 
import static ch.lambdaj.Lambda.DESCENDING; 
import static ch.lambdaj.Lambda.sort; 
import java.util.Arrays; 
import java.util.List; 

public class Test { 
    public static void main(String[] args) { 
     List<Integer> numberList = Arrays.asList(4,8,2,3,4,1,13,2,5); 

     List<Integer> sortedList = sort(numberList, on(Integer.class)); 
     System.out.println(sortedList); //shows ascending list 

     sortedList = sort(numberList, on(Integer.class), DESCENDING); 
     System.out.println(sortedList); //shows descending list 
    } 
} 

Este código de muestra:

[1, 2, 2, 3, 4, 4, 5, 8, 13] 
[13, 8, 5, 4, 4, 3, 2, 2, 1] 

En una línea puede ordenar una lista, este es un ejemplo simple pero con esta biblioteca puede resolver más.

sort(numberList, on(Integer.class)); 

Debe añadir lambdaj-2.4.jar a su proyecto. Espero que esto sea útil.

Nota: Esto lo ayudará a suponer que puede tener alternativas a su código.

0

Ésta es la manera más "limpia" para hacer esto (creo):

public static void main(String[] args) throws IOException { 

    int[] array = {1,4,2,8,4,7,5 /*put in the numbers you want to sort*/}; 

    Arrays.sort(array); /*You will need to import this function*/ 

    for (int i = 0; i < array.length; i++) { 
     System.out.println(array[i]); 
    } 

    } 

Esperanza esta ayuda!

-2

Crear archivo con Java Extentation.ie (ArraySorting.java) y luego pegar el código ....

import java.io.*; 
import java.util.Arrays; 
import java.util.Scanner; 
public class ArraySorting 
{ 


public static void main(String args[]) 
{ 
     Scanner user_input=new Scanner(System.in); 

     System.out.println("enter Size elements..."); 
     int Size=user_input.nextInt(); 

     int[] a=new int[Size]; 
     System.out.println("Enter element Of an Array..."); 
     for(int j=0;j<Size;j++) 
     { 
      a[j]=user_input.nextInt(); 
     } 

     Arrays.sort(a);  
     for(int index=0;index<a.length;index++) 
     { 
      System.out.println(a[index]); 
     } 

} 

}

+0

Solo estoy adivinando, pero creo que el OP estaba intentando escribir su propio algoritmo de clasificación en lugar de usar una solución lista para usar. – LordWilmore

+0

Este es un simple Java Coding Dude:/.... prueba este Enlace ... http: //stackoverflow.com/questions/8931977/sort-array-from-smallest-to-largest-using-java/ 39248098 # 39248098. thankx --- –

+0

Bastante. Me imagino que es alguien que está aprendiendo a programar, y cuando se vuelve 'simple' para ellos, entonces deben usar los métodos de la biblioteca como ustedes, pero pasar a la sección de respuestas nunca es una buena manera de aprender – LordWilmore

0

Matriz de clasificación sin utilizar funciones integradas en Java .... ... solo haga que el nuevo archivo siga este nombre -> (ArraySorting.java) ..... Ejecute el proyecto y disfrútelo !!!!!

import java.io.*; 
import java.util.Arrays; 
import java.util.Scanner; 
public class ArraySorting 
{ 
public static void main(String args[]) 
{ 
    int temp=0; 
    Scanner user_input=new Scanner(System.in); 
    System.out.println("enter Size elements..."); 
    int Size=user_input.nextInt(); 

    int[] a=new int[Size]; 
    System.out.println("Enter element Of an Array..."); 
    for(int j=0;j<Size;j++) 
    { 
     a[j]=user_input.nextInt(); 
    }  
    for(int index=0;index<a.length;index++) 
    { 
     for(int j=index+1;j<a.length;j++) 
     { 
      if(a[index] > a[j]) 
      { 
       temp = a[index]; 
       a[index] = a[j]; 
       a[j] = temp; 
      } 
     } 
    } 
    System.out.print("Output is:- "); 
    for(int i=0;i<a.length;i++) 
    { 
     System.out.println(a[i]); 
    } 

} 

}

Cuestiones relacionadas