Algoritimos de Ordenação
Algorítimo de Ordenação é o algorítimo que coloca em uma certa ordem, elementos de uma dada sequência. Existem várias razões para se ordenar uma sequência. Uma delas é a possibilidade se acessar seus dados de modo mais eficiente.
• Quick Sort
O Quick Sort é um dos melhores algorítimos existentes, e usa recursividade para fazer a ordenação. Primeiramente ele escolhe um elemento e divide a liste em duas partes, logo após ele ordena cada parte separadamente.
Com 10 mil itens, no melhor caso ele leva 11 milisegundos para fazer toda a ação e no pior 12 ms . Enquanto isso, no caso médio ele leva 18 ms. Já com 50 mil itens, ele faz em 23 ms o pior caso, 24 ms no melhor e 31 ms no médio. public class QuickSort { private int[] numbers; private int number;
public void sort(int[] values) { if (values ==null || values.length==0){ return; } this.numbers = values; number = values.length; quicksort(0, number - 1); }
private void quicksort(int low, int high) { int i = low, j = high; int pivot = numbers[low + (high-low)/2]; while (i pivot) { j--; } if (i = 0 && array[j] > a; j--) { array[j + 1] = array[j]; array[j] = a; } } }
• Merge Sort
O Merge Sort é baseado na ideia de que unir duas listas ordenadas é um processo rápido. Sendo que uma lista com apenas um elemento já está ordenada, o Merge Sort quebra as listas até que elas tenham esse tamanho único e depois as une, recursivamente.
Com 10 mil itens, ele leva 31 milisegundos no caso médio, no melhor caso 22 ms e no pior 29 ms.
Já com 50 mil numeros, ele gasta 21 ms no pior caso, 13 ms no melhor e 22 no caso médio. public class Mergesort { private int[] numbers; private int[] helper;
private int number;
public void sort(int[] values)