Merge sort: diferenças entre revisões
Conteúdo apagado Conteúdo adicionado
Correção da ortografia da palavra subproblemas |
Formatação, remoção de link quebrado, incluídas referências |
||
Linha 26:
=== Complexidade ===
* Complexidade de tempo: <math>\Theta(n
* Complexidade de espaço: <math>\Theta(n)</math>.
Linha 53:
== Comparação com outros algoritmos de ordenação por comparação ==
Em comparação a outros algoritmos de divisão e conquista, como o
Abaixo uma tabela para comparação:
Linha 66:
|-
|Merge sort
|<math>O(n
|<math>O(n
|<math>O(n
|-
|Quick sort
|<math>O(n
|<math>O(n
|<math>O(n
|-
|Bubble sort
|<math>O(n)</math>
|<math>O(n
|<math>O(n
|-
|Insertion sort
|<math>O(n)</math>
|<math>O(n
|<math>O(n
|-
|Selection sort
|<math>O(n
|<math>O(n
|<math>O(n
|}
Obs.: O [[Bubble sort]] apresenta melhor caso como <math>O(n)
== Observações ==
[[Imagem:Merge-sort-example-300px.gif|thumb|Exemplo de execução do merge sort.]]
* É possível implementar o ''merge sort'' utilizando somente um vetor auxiliar ao longo de toda a execução, tornando assim a complexidade de espaço adicional igual a <math>\Theta(n \log n)</math>.
* É um algoritmo estável na maioria das implementações, em que elas podem ser iterativas ou recursivas.
* É possível também implementar o algoritmo com espaço adicional <math>\Theta(1)</math>.
Linha 102:
=== Desvantagens ===
* Utiliza funções recursivas;
* Gasto extra de memória. O algoritmo cria uma cópia do vetor para cada nível da chamada recursiva, totalizando um uso adicional de memória igual a <math>O(n
=== Implementações do Mergesort ===
Linha 380:
k += 1
</syntaxhighlight>
{{Referências}}▼
== Ver também ==
Linha 394 ⟶ 391:
* [[Shell sort]]
* [[Radix sort]]
▲{{Referências}}
== Ligações externas ==
* {{Link|en|2=http://c2.com/cgi/wiki?MergeSort |3=Merge Sort}}
* [http://www.codecodex.com/wiki/Merge_sort Merge sort em 13 linguagens]
{{Portal3|Tecnologias de informação}}
|