Com literalmente dezenas de algoritmos de ordenação disponíveis , determinando que vai funcionar melhor com o seu sistema vai depender de comparações de vários fatores , como o tamanho da lista , a velocidade ou a complexidade do algoritmo, e se você vai usar uma chave para classificar. Complexidade
A complexidade de um algoritmo de ordenação é medido por O ( n ) , ou a " ordem de n ", onde n é o tamanho da lista . Ela mede quantos passes que leva para ordenar a lista e calcula seu melhor, pior e tempo médio para fazê-lo. Complexidades comuns incluem n como melhor caso para os tipos , tais como tipo de inserção e shell tipo , n log n, (usando um logaritmo de base 2 , e não uma base-10 ), que é a complexidade para merge sort e heapsort , e n ² , que é mais lento do que na primeira vez e é a velocidade para a seleção de tipo de
lista Condição
às vezes, você vai saber como os itens não classificados em uma lista são organizados. : por exemplo, se eles estão quase classificado, em ordem inversa, ou uma lista com alguns itens exclusivos. Esse conhecimento ajuda a selecionar um algoritmo eficiente para resolver o assunto . Por exemplo, usando a inserção de classificação para classificar uma lista em ordem invertida tem uma duração de n ², enquanto heap de classificação podem fazê-lo mais rápido, no log n n tempo. Em uma lista que está quase classificado, ordenação por inserção é mais rápido que tipo heap. Quando a lista contém um conjunto inteiramente casualizado de dados, selecione um algoritmo com uma média complexidade caso de log n n tempo de execução , como a pilha de tipo , quicksort ou merge sort .
Lista Tamanho
Alguns algoritmos são mais difíceis de usar do que outros, por isso o número de elementos em uma lista e quantas vezes você precisa classificar pode ajudar a determinar o algoritmo que você vai escolher . Classifica como ordenação por inserção são rápidos e funcionam bem ao ordenar listas menores , e são fáceis de implementar, mas eles são lentos com as listas de maiores dimensões. Ordena que usam um algoritmo de dividir e conquistar , como quicksort e mesclar tipo são mais difíceis de implementar , mas as listas de classificação maiores mais rápido em casos médios.
Estabilidade
estabilidade Algoritmo descreve se o tipo mantém a ordem dos itens com base em uma chave de classificação. Por exemplo, usando o primeiro caractere como uma chave para uma lista que tem " John ", " Steve " e " Jim " nesta ordem, um algoritmo estável classifica a lista de " João", " Jim " e " Steve ", enquanto um algoritmo instável pode ou não classificar " Jim " antes de " João". Mesclar espécie , tipo de inserção e bubble sort são todos os algoritmos estáveis enquanto shell espécie , tipo de seleção e pilha tipo não são.