algoritmo de ordenação comparação

algoritmos de ordenação são uma parte importante da Gestão de dados. AtCprogramming.com, oferecemos tutoriais para a compreensão das técnicas mais importantes e comprometedoras. Cada algoritmo tem pontos fortes e sensações particulares e, em muitos casos, a melhor coisa a fazer é apenas usar a função de integração qsort. Por vezes, quando isto não é uma opção ou você só precisa de um algoritmo de ordenação rápida e suja, há uma variedade de escolhas.


a Maioria dos algoritmos de ordenação do trabalho, comparando os dados que estão sendo classificados. Em alguns casos, pode ser desejável classificar um grande pedaço de dados (por exemplo, uma estrutura contendo um nome e endereço) com base em apenas uma parte desses dados.O pedaço de dados realmente usado para determinar a ordem ordenada é chamado de chave.algoritmos de ordenação são geralmente julgados por sua eficiência. Neste caso, a eficiência refere-se à eficiência algorítmica como o tamanho do crescimento da entrada e é geralmente baseado no número de elementos a classificar. A maioria dos algorítmos em uso tem uma eficiência algorítmica de O(n^2) orO(n*log(n)). Alguns algoritmos de casos especiais (um exemplo é mencionado em pérolas de programação) podem classificar certos conjuntos de dados mais rápido do que O(n*log(n)). Estes argumentos não se baseiam na comparação dos itens que estão a ser ordenados e baseiam-se emtricks. It has been shown that no key-comparison algorithm can perform better than O(n * log (n)).muitos algoritmos que têm a mesma eficiência não têm a mesma velocidade na mesma entrada. Em primeiro lugar,algoritmos devem ser julgados com base em seu caso Médio, melhor caso, e pior caso eficiência. Alguns algoritmos,como o Quick sort, funcionam excepcionalmente bem para algumas entradas, mas horrivelmente para outros. Outros algoritmos, como o merge sort, não são afetados pela Ordem dos dados de entrada.Mesmo uma versão modificada do bubble sort pode terminar em O (n) para as entradas mais favoráveis.um segundo fator é o “termo constante”. Como a notação big-O abstrai muitos dos detalhes de um processo, é bastante útil para olhar para a bigpicture. Mas uma coisa que é descartada é a constante na frente da expressão: por exemplo, O(c*n) é apenas O(n). No mundo real, oconstant, c, variará entre diferentes algoritmos. Um quicksort bem implementado deve ter um multiplicador constante muito menor do que o heap sort.
Um segundo critério para julgar algoritmos é o seu requisito de espaço — eles precisam de espaço de risco ou o array pode ser classificado no lugar (sem memória adicional além de algumas variáveis)? Alguns algoritmos nunca requerem espaço extra, enquanto alguns são mais facilmente compreendidos quando implementados espaço withextra (heap sort, por exemplo, pode ser feito no lugar, mas conceptualmente é muito mais fácil pensar em um heap separado). Os requisitos de espaço podem evendepend na estrutura de dados utilizada (juntar a ordenação em arrays versus juntar a ordenação em listas ligadas, por exemplo).
Um terceiro critério é a estabilidade — o sort preserva a ordem de keyswith equal values? Os tipos mais simples fazem apenas isto, mas alguns tipos, tal como o asheap, não fazem.
o seguinte gráfico compara algoritmos de ordenação nos vários critérios acima referidos; os algoritmos com termos constantes mais elevados aparecem primeiro, thoughthis é claramente um conceito dependente da implementação e só deve ser taken como um guia áspero quando escolher entre os tipos da mesma eficiência grande-O.

Time
Sort Average Best Worst Space Stability Remarks
Bubble sort O(n^2) O(n^2) O(n^2) Constant Stable Always use a modified bubble sort
Modified Bubble sort O(n^2) O(n) O(n^2) Constant Stable Stops after reaching a sorted array
Selection Sort O(n^2) O(n^2) O(n^2) Constante Estável Mesmo uma perfeição entrada ordenada requer a digitalização de toda a matriz
Inserção de Classificação O(n^2) S(n) O(n^2) Constante Estável No melhor caso (já classificado), cada inserir requer constante de tempo
Heap Sort O(n*log(n)) O(n*log(n)) O(n*log(n)) Constante Instáveis usando a matriz de entrada como de armazenamento para a pilha, é possível alcançar a constante de espaço
Merge Sort O(n*log(n)) O(n*log(n)) O(n*log(n)) Depende Estável Em matrizes, mesclagem de classificação requer O(n) o espaço; em listas ligadas, merge sort requer constante de espaço
Quicksort O(n*log(n)) O(n*log(n)) O(n^2) Constante Estável Aleatoriamente escolher um pivô de valor (ou baralhar matriz antes da ordenação) pode ajudar a evitar o pior dos cenários, tais como perfeitamente array ordenado.



Deixe uma resposta

O seu endereço de email não será publicado.