Selection Sort
O algoritmo é baseado em se passar sempre o menor valor do vetor para a primeira posição (ou o maior dependendo da ordem requerida), depois o segundo menor valor para a segunda posição e assim sucessivamente, até os últimos dois elementos.
Como tudo funciona
Mãos a obra:
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class SelectionSort {
public static void main(String[] args) {
Scanner leia = new Scanner(System.in);
ArrayList lista = new ArrayList<>();
int cont = 1;
for (int i = 0; i < 1000; i++) {
Random rand = new Random();
int n = rand.nextInt(1000);
lista.add(n);
}
SelectionSort(lista);
for (Integer integer : lista) {
System.out.print(integer + ", ");
if (cont % 20 == 0) {
System.out.println();
}
cont++;
}
}
/* ---------------------- Algoritimo De Ordenação ---------------------- */
public static void SelectionSort(ArrayList lista) {
for (int i = 0; i < lista.size(); i++) {
int min = i;
for (int j = i + 1; j < lista.size(); j++) {
if (lista.get(j) < lista.get(min)) {
min = j;
}
}
Integer aux = lista.get(i);
lista.set(i, lista.get(min));
lista.set(min, aux);
}
}
}
Tempo de execução(em segundos) VS Qtd de nº no Array:
Selection Sort | 1.000 | 10.000 | 500.000 | 1.000.000 |
---|---|---|---|---|
Bom | 0.0395172 | 0.1438769 | 271.8567817 | 1282.1676655 |
Médio | 0.0345794 | 0.3685115 | 2411.6839104 | 6749.7445372 |
Ruim | 0.0021276 | 0.1964097 | 543.8211861 | 2284.7899298 |
*A tabela representa a quantidade de numros utilizadas e o tempo de execução o processo de ordenação