/ / Clasificación de números en orden ascendente en jraylist java - java, clasificación, arraylist

Clasificación de números en orden ascendente en jraylist java - java, clasificación, arraylist

import java.util.ArrayList;
import java.util.Random;

public class Final
{
public static void main(String[]arg)
{
ArrayList<Integer>randomNumber2=new ArrayList<Integer>();
Random rand=new Random();
for(int i=0;i<10;i++)
{
randomNumber2.add(new Integer(rand.nextInt(50)));
}
}

He creado este arraylist generado al azarque genera números 1-50. Quiero ordenar los números que se generaron en orden ascendente. Sin usar un Collection.sort, ¿cómo lo haría usando ArrayList?

Respuestas

1 para la respuesta № 1

Sin solo copiar y pegar el código, pensemossobre la respuesta aquí. Tiene 10 valores y desea agregarlos a una matriz en orden ascendente. Si realmente hicieras eso en tu cabeza, ¿cómo harías para organizarlo?

Una forma (simple, puedo explicarlo aquí, y apuestousted podría implementarlo) es asignar el primer número al principio del Arraylist. Luego, cuando se genera el segundo número, compárelo con el primer valor en el Arraylist, si el número recién generado es más bajo que el número con el que lo está verificando, mueva ese primer número hacia atrás 1 ranura en el Arraylist y conecte el nuevo número en el lugar recién vacío.

Si marca un número recién generado en contra,diga 2 números en el Arraylist y este nuevo número se encuentra entre el valor del primer y el segundo número, luego, cuando verifique el nuevo número con el primero, verificará y continuará a lo largo del código. Luego, cuando verifique el nuevo número con el segundo número en el Arraylist y descubra que es más bajo, entonces mueva ese número hacia atrás 1 ranura en el ArrayList y conecte el nuevo número en la ranura 2.

Si marca un número recién generado en contra,diga 3 números hasta ahora (esta es la cuarta iteración ahora) y llega al cuarto valor en el arrailista que está vacío, luego asigna el número recién generado a esa cuarta ranura como debería ser el nuevo valor máximo.

Esto no tiene tanto sentido como yo quiero,pero supongo que esto es para un laboratorio / PA / hw / algo así, así que espero que pueda tomar lo que escribí, lo entiendo y escribir su propio código. No es la forma más eficiente de hacerlo. este es un método fácil de entender que casi cualquier persona puede codificar y es excelente para una simple tarea en el aula.

¡Aclamaciones!


0 para la respuesta № 2

Aquí está el código que colecciones.sort utiliza internamente que también puede usar si tiene algún tipo de reserva contra la clase de colecciones. Puedes hacer este método de utilidad en tu clase.

public static <T extends Comparable<? super T>> void sort(List<T> list) {
Object[] a = list.toArray();
Arrays.sort(a);
ListIterator<T> i = list.listIterator();
for (int j=0; j<a.length; j++) {
i.next();
i.set((T)a[j]);
}

-3 para la respuesta № 3

Hay muchos, muchos algoritmos de clasificación, pero como no suena como el rendimiento es una preocupación y esto podría ser una tarea ...

Así que intenta Tipo de sueño!

import java.util.ArrayList;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;

public class Final {

private static int count = 10;

public static void main(String[] arg)
{
ArrayList<Integer> randomNumber2 = new ArrayList<Integer>();
Random rand = new Random();

for (int i = 0; i < count; i++) {
randomNumber2.add(new Integer(rand.nextInt(50)));
}

Timer timer = new Timer();
for(final Integer i : randomNumber2) {
timer.schedule(new TimerTask()
{
public void run()
{
System.out.println(i);
--count;
}
}, i * 50L);
}
while(count > 0){ Thread.yield();}
timer.cancel();
}
}