<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://dainf.ct.utfpr.edu.br/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-br">
		<id>http://dainf.ct.utfpr.edu.br/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ddrv+utfpr</id>
		<title>Wiki DAINF - Contribuições do usuário [pt-br]</title>
		<link rel="self" type="application/atom+xml" href="http://dainf.ct.utfpr.edu.br/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ddrv+utfpr"/>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Especial:Contribui%C3%A7%C3%B5es/Ddrv_utfpr"/>
		<updated>2026-04-19T14:26:04Z</updated>
		<subtitle>Contribuições do usuário</subtitle>
		<generator>MediaWiki 1.18.1</generator>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-12-02T01:06:30Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: /* Características */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características ==&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
* Sua complexidade é nlog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;n (pior caso), sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
* Alto consumo de memoria, devido à série de chamadas recursivas.&lt;br /&gt;
&lt;br /&gt;
* Por ser mais complexo que os outros algoritmos de ordenação, ele só é realmente mais rápido na prática quando n for suficientemente grande.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará a segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente comparam-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementação em C: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void mergeSort(int vetor[],int aux[],int tam) {&lt;br /&gt;
   m_sort(vetor,aux,0,tam-1);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void merge(int vetor[],int aux[],int esq,int meio,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int i,esq_fim,num_elementos,aux_pos;&lt;br /&gt;
&lt;br /&gt;
   esq_fim=meio-1;&lt;br /&gt;
   aux_pos=esq;&lt;br /&gt;
   num_elementos=dire-esq+1;&lt;br /&gt;
&lt;br /&gt;
   while ((esq&amp;lt;=esq_fim)&amp;amp;&amp;amp;(meio&amp;lt;=dire)) {&lt;br /&gt;
 &lt;br /&gt;
    if (vetor[esq]&amp;lt;=vetor[meio]) {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[esq];&lt;br /&gt;
      aux_pos=aux_pos+1;&lt;br /&gt;
      esq=esq+1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[meio];&lt;br /&gt;
      aux_pos=aux_pos + 1;&lt;br /&gt;
      meio=meio+1;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (esq&amp;lt;=esq_fim) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[esq];&lt;br /&gt;
     esq=esq+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (meio&amp;lt;=dire) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[meio];&lt;br /&gt;
     meio=meio+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;num_elementos;i++) {&lt;br /&gt;
 &lt;br /&gt;
     vetor[dire]=aux[dire];&lt;br /&gt;
     dire=dire-1;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void m_sort(int vetor[],int aux[],int esq,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int meio;&lt;br /&gt;
   if (dire&amp;gt;esq) {&lt;br /&gt;
       meio=(dire+esq)/ 2;&lt;br /&gt;
       m_sort(vetor,aux,esq,meio);&lt;br /&gt;
       m_sort(vetor,aux,meio+1,dire);&lt;br /&gt;
       merge(vetor,aux,esq,meio+1,dire);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referências ==&lt;br /&gt;
*Site da Wikipedia em inglês: http://en.wikipedia.org/wiki/Merge_sort&lt;br /&gt;
*M. BEDER, Delano - ''Algoritmos de Ordenação: Merge Sort'': http://www.ic.unicamp.br/~luciano/ACH2002/notasdeaula/11-mergeSort.pdf&lt;br /&gt;
*FEOFILOFF, Paulo - ''Merge Sort'': http://www.ime.usp.br/~pf/mac0122-2002/aulas/mergesort.html&lt;br /&gt;
&lt;br /&gt;
== Ligações Externas ==&lt;br /&gt;
Demonstração de funcionamento interativa do Merge Sort (em inglês): &lt;br /&gt;
http://www.cse.iitk.ac.in/users/dsrkg/cs210/applets/sortingII/mergeSort/mergeSort.html&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-12-02T01:03:57Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: /* Referências */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características ==&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
* Sua complexidade é nlog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
* Alto consumo de memoria, devido a série de chamadas recursivas.&lt;br /&gt;
&lt;br /&gt;
* Por ser mais complexo que os outros algoritmos de ordenação, ele só é realmente mais rápido na prática quando n for suficientemente grande.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará a segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente comparam-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementação em C: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void mergeSort(int vetor[],int aux[],int tam) {&lt;br /&gt;
   m_sort(vetor,aux,0,tam-1);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void merge(int vetor[],int aux[],int esq,int meio,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int i,esq_fim,num_elementos,aux_pos;&lt;br /&gt;
&lt;br /&gt;
   esq_fim=meio-1;&lt;br /&gt;
   aux_pos=esq;&lt;br /&gt;
   num_elementos=dire-esq+1;&lt;br /&gt;
&lt;br /&gt;
   while ((esq&amp;lt;=esq_fim)&amp;amp;&amp;amp;(meio&amp;lt;=dire)) {&lt;br /&gt;
 &lt;br /&gt;
    if (vetor[esq]&amp;lt;=vetor[meio]) {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[esq];&lt;br /&gt;
      aux_pos=aux_pos+1;&lt;br /&gt;
      esq=esq+1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[meio];&lt;br /&gt;
      aux_pos=aux_pos + 1;&lt;br /&gt;
      meio=meio+1;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (esq&amp;lt;=esq_fim) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[esq];&lt;br /&gt;
     esq=esq+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (meio&amp;lt;=dire) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[meio];&lt;br /&gt;
     meio=meio+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;num_elementos;i++) {&lt;br /&gt;
 &lt;br /&gt;
     vetor[dire]=aux[dire];&lt;br /&gt;
     dire=dire-1;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void m_sort(int vetor[],int aux[],int esq,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int meio;&lt;br /&gt;
   if (dire&amp;gt;esq) {&lt;br /&gt;
       meio=(dire+esq)/ 2;&lt;br /&gt;
       m_sort(vetor,aux,esq,meio);&lt;br /&gt;
       m_sort(vetor,aux,meio+1,dire);&lt;br /&gt;
       merge(vetor,aux,esq,meio+1,dire);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referências ==&lt;br /&gt;
*Site da Wikipedia em inglês: http://en.wikipedia.org/wiki/Merge_sort&lt;br /&gt;
*M. BEDER, Delano - ''Algoritmos de Ordenação: Merge Sort'': http://www.ic.unicamp.br/~luciano/ACH2002/notasdeaula/11-mergeSort.pdf&lt;br /&gt;
*FEOFILOFF, Paulo - ''Merge Sort'': http://www.ime.usp.br/~pf/mac0122-2002/aulas/mergesort.html&lt;br /&gt;
&lt;br /&gt;
== Ligações Externas ==&lt;br /&gt;
Demonstração de funcionamento interativa do Merge Sort (em inglês): &lt;br /&gt;
http://www.cse.iitk.ac.in/users/dsrkg/cs210/applets/sortingII/mergeSort/mergeSort.html&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-12-02T01:01:07Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: /* Ligações Externas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características ==&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
* Sua complexidade é nlog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
* Alto consumo de memoria, devido a série de chamadas recursivas.&lt;br /&gt;
&lt;br /&gt;
* Por ser mais complexo que os outros algoritmos de ordenação, ele só é realmente mais rápido na prática quando n for suficientemente grande.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará a segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente comparam-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementação em C: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void mergeSort(int vetor[],int aux[],int tam) {&lt;br /&gt;
   m_sort(vetor,aux,0,tam-1);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void merge(int vetor[],int aux[],int esq,int meio,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int i,esq_fim,num_elementos,aux_pos;&lt;br /&gt;
&lt;br /&gt;
   esq_fim=meio-1;&lt;br /&gt;
   aux_pos=esq;&lt;br /&gt;
   num_elementos=dire-esq+1;&lt;br /&gt;
&lt;br /&gt;
   while ((esq&amp;lt;=esq_fim)&amp;amp;&amp;amp;(meio&amp;lt;=dire)) {&lt;br /&gt;
 &lt;br /&gt;
    if (vetor[esq]&amp;lt;=vetor[meio]) {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[esq];&lt;br /&gt;
      aux_pos=aux_pos+1;&lt;br /&gt;
      esq=esq+1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[meio];&lt;br /&gt;
      aux_pos=aux_pos + 1;&lt;br /&gt;
      meio=meio+1;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (esq&amp;lt;=esq_fim) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[esq];&lt;br /&gt;
     esq=esq+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (meio&amp;lt;=dire) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[meio];&lt;br /&gt;
     meio=meio+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;num_elementos;i++) {&lt;br /&gt;
 &lt;br /&gt;
     vetor[dire]=aux[dire];&lt;br /&gt;
     dire=dire-1;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void m_sort(int vetor[],int aux[],int esq,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int meio;&lt;br /&gt;
   if (dire&amp;gt;esq) {&lt;br /&gt;
       meio=(dire+esq)/ 2;&lt;br /&gt;
       m_sort(vetor,aux,esq,meio);&lt;br /&gt;
       m_sort(vetor,aux,meio+1,dire);&lt;br /&gt;
       merge(vetor,aux,esq,meio+1,dire);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referências ==&lt;br /&gt;
*Site da Wikipedia em inglês: http://en.wikipedia.org/wiki/Merge_sort&lt;br /&gt;
*M. BEDER, Delano - ''Algoritmos de Ordenação: Merge Sort'': http://www.ic.unicamp.br/~luciano/ACH2002/notasdeaula/11-mergeSort.pdf&lt;br /&gt;
&lt;br /&gt;
== Ligações Externas ==&lt;br /&gt;
Demonstração de funcionamento interativa do Merge Sort (em inglês): &lt;br /&gt;
http://www.cse.iitk.ac.in/users/dsrkg/cs210/applets/sortingII/mergeSort/mergeSort.html&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-12-02T01:00:44Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: /* Referências */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características ==&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
* Sua complexidade é nlog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
* Alto consumo de memoria, devido a série de chamadas recursivas.&lt;br /&gt;
&lt;br /&gt;
* Por ser mais complexo que os outros algoritmos de ordenação, ele só é realmente mais rápido na prática quando n for suficientemente grande.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará a segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente comparam-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementação em C: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void mergeSort(int vetor[],int aux[],int tam) {&lt;br /&gt;
   m_sort(vetor,aux,0,tam-1);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void merge(int vetor[],int aux[],int esq,int meio,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int i,esq_fim,num_elementos,aux_pos;&lt;br /&gt;
&lt;br /&gt;
   esq_fim=meio-1;&lt;br /&gt;
   aux_pos=esq;&lt;br /&gt;
   num_elementos=dire-esq+1;&lt;br /&gt;
&lt;br /&gt;
   while ((esq&amp;lt;=esq_fim)&amp;amp;&amp;amp;(meio&amp;lt;=dire)) {&lt;br /&gt;
 &lt;br /&gt;
    if (vetor[esq]&amp;lt;=vetor[meio]) {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[esq];&lt;br /&gt;
      aux_pos=aux_pos+1;&lt;br /&gt;
      esq=esq+1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[meio];&lt;br /&gt;
      aux_pos=aux_pos + 1;&lt;br /&gt;
      meio=meio+1;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (esq&amp;lt;=esq_fim) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[esq];&lt;br /&gt;
     esq=esq+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (meio&amp;lt;=dire) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[meio];&lt;br /&gt;
     meio=meio+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;num_elementos;i++) {&lt;br /&gt;
 &lt;br /&gt;
     vetor[dire]=aux[dire];&lt;br /&gt;
     dire=dire-1;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void m_sort(int vetor[],int aux[],int esq,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int meio;&lt;br /&gt;
   if (dire&amp;gt;esq) {&lt;br /&gt;
       meio=(dire+esq)/ 2;&lt;br /&gt;
       m_sort(vetor,aux,esq,meio);&lt;br /&gt;
       m_sort(vetor,aux,meio+1,dire);&lt;br /&gt;
       merge(vetor,aux,esq,meio+1,dire);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referências ==&lt;br /&gt;
*Site da Wikipedia em inglês: http://en.wikipedia.org/wiki/Merge_sort&lt;br /&gt;
*M. BEDER, Delano - ''Algoritmos de Ordenação: Merge Sort'': http://www.ic.unicamp.br/~luciano/ACH2002/notasdeaula/11-mergeSort.pdf&lt;br /&gt;
&lt;br /&gt;
== Ligações Externas ==&lt;br /&gt;
Demonstração de funcionamento interativa do Merge Sort (em inglês)&lt;br /&gt;
http://www.cse.iitk.ac.in/users/dsrkg/cs210/applets/sortingII/mergeSort/mergeSort.html&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-12-02T00:59:44Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: /* Referências */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características ==&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
* Sua complexidade é nlog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
* Alto consumo de memoria, devido a série de chamadas recursivas.&lt;br /&gt;
&lt;br /&gt;
* Por ser mais complexo que os outros algoritmos de ordenação, ele só é realmente mais rápido na prática quando n for suficientemente grande.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará a segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente comparam-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementação em C: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void mergeSort(int vetor[],int aux[],int tam) {&lt;br /&gt;
   m_sort(vetor,aux,0,tam-1);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void merge(int vetor[],int aux[],int esq,int meio,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int i,esq_fim,num_elementos,aux_pos;&lt;br /&gt;
&lt;br /&gt;
   esq_fim=meio-1;&lt;br /&gt;
   aux_pos=esq;&lt;br /&gt;
   num_elementos=dire-esq+1;&lt;br /&gt;
&lt;br /&gt;
   while ((esq&amp;lt;=esq_fim)&amp;amp;&amp;amp;(meio&amp;lt;=dire)) {&lt;br /&gt;
 &lt;br /&gt;
    if (vetor[esq]&amp;lt;=vetor[meio]) {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[esq];&lt;br /&gt;
      aux_pos=aux_pos+1;&lt;br /&gt;
      esq=esq+1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[meio];&lt;br /&gt;
      aux_pos=aux_pos + 1;&lt;br /&gt;
      meio=meio+1;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (esq&amp;lt;=esq_fim) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[esq];&lt;br /&gt;
     esq=esq+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (meio&amp;lt;=dire) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[meio];&lt;br /&gt;
     meio=meio+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;num_elementos;i++) {&lt;br /&gt;
 &lt;br /&gt;
     vetor[dire]=aux[dire];&lt;br /&gt;
     dire=dire-1;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void m_sort(int vetor[],int aux[],int esq,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int meio;&lt;br /&gt;
   if (dire&amp;gt;esq) {&lt;br /&gt;
       meio=(dire+esq)/ 2;&lt;br /&gt;
       m_sort(vetor,aux,esq,meio);&lt;br /&gt;
       m_sort(vetor,aux,meio+1,dire);&lt;br /&gt;
       merge(vetor,aux,esq,meio+1,dire);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referências ==&lt;br /&gt;
Site da Wikipedia em inglês: http://en.wikipedia.org/wiki/Merge_sort&lt;br /&gt;
M. BEDER, Delano - [''Algoritmos de Ordenação: Merge Sort'']http://www.ic.unicamp.br/~luciano/ACH2002/notasdeaula/11-mergeSort.pdf&lt;br /&gt;
&lt;br /&gt;
== Ligações Externas ==&lt;br /&gt;
Demonstração de funcionamento interativa do Merge Sort (em inglês)&lt;br /&gt;
http://www.cse.iitk.ac.in/users/dsrkg/cs210/applets/sortingII/mergeSort/mergeSort.html&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-12-02T00:47:48Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características ==&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
* Sua complexidade é nlog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
* Alto consumo de memoria, devido a série de chamadas recursivas.&lt;br /&gt;
&lt;br /&gt;
* Por ser mais complexo que os outros algoritmos de ordenação, ele só é realmente mais rápido na prática quando n for suficientemente grande.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará a segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente comparam-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementação em C: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void mergeSort(int vetor[],int aux[],int tam) {&lt;br /&gt;
   m_sort(vetor,aux,0,tam-1);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void merge(int vetor[],int aux[],int esq,int meio,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int i,esq_fim,num_elementos,aux_pos;&lt;br /&gt;
&lt;br /&gt;
   esq_fim=meio-1;&lt;br /&gt;
   aux_pos=esq;&lt;br /&gt;
   num_elementos=dire-esq+1;&lt;br /&gt;
&lt;br /&gt;
   while ((esq&amp;lt;=esq_fim)&amp;amp;&amp;amp;(meio&amp;lt;=dire)) {&lt;br /&gt;
 &lt;br /&gt;
    if (vetor[esq]&amp;lt;=vetor[meio]) {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[esq];&lt;br /&gt;
      aux_pos=aux_pos+1;&lt;br /&gt;
      esq=esq+1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[meio];&lt;br /&gt;
      aux_pos=aux_pos + 1;&lt;br /&gt;
      meio=meio+1;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (esq&amp;lt;=esq_fim) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[esq];&lt;br /&gt;
     esq=esq+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (meio&amp;lt;=dire) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[meio];&lt;br /&gt;
     meio=meio+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;num_elementos;i++) {&lt;br /&gt;
 &lt;br /&gt;
     vetor[dire]=aux[dire];&lt;br /&gt;
     dire=dire-1;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void m_sort(int vetor[],int aux[],int esq,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int meio;&lt;br /&gt;
   if (dire&amp;gt;esq) {&lt;br /&gt;
       meio=(dire+esq)/ 2;&lt;br /&gt;
       m_sort(vetor,aux,esq,meio);&lt;br /&gt;
       m_sort(vetor,aux,meio+1,dire);&lt;br /&gt;
       merge(vetor,aux,esq,meio+1,dire);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referências ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ligações Externas ==&lt;br /&gt;
Demonstração de funcionamento interativa do Merge Sort (em inglês)&lt;br /&gt;
http://www.cse.iitk.ac.in/users/dsrkg/cs210/applets/sortingII/mergeSort/mergeSort.html&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-30T21:05:22Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: /* Características: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
* Sua complexidade é nlog&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
* Alto consumo de memoria, devido a série de chamadas recursivas.&lt;br /&gt;
&lt;br /&gt;
* Por ser mais complexo que os outros algoritmos de ordenação, ele só é realmente mais rápido na prática quando n for suficientemente grande.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará a segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente comparam-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementação em C: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void mergeSort(int vetor[],int aux[],int tam) {&lt;br /&gt;
   m_sort(vetor,aux,0,tam-1);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void merge(int vetor[],int aux[],int esq,int meio,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int i,esq_fim,num_elementos,aux_pos;&lt;br /&gt;
&lt;br /&gt;
   esq_fim=meio-1;&lt;br /&gt;
   aux_pos=esq;&lt;br /&gt;
   num_elementos=dire-esq+1;&lt;br /&gt;
&lt;br /&gt;
   while ((esq&amp;lt;=esq_fim)&amp;amp;&amp;amp;(meio&amp;lt;=dire)) {&lt;br /&gt;
 &lt;br /&gt;
    if (vetor[esq]&amp;lt;=vetor[meio]) {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[esq];&lt;br /&gt;
      aux_pos=aux_pos+1;&lt;br /&gt;
      esq=esq+1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[meio];&lt;br /&gt;
      aux_pos=aux_pos + 1;&lt;br /&gt;
      meio=meio+1;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (esq&amp;lt;=esq_fim) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[esq];&lt;br /&gt;
     esq=esq+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (meio&amp;lt;=dire) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[meio];&lt;br /&gt;
     meio=meio+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;num_elementos;i++) {&lt;br /&gt;
 &lt;br /&gt;
     vetor[dire]=aux[dire];&lt;br /&gt;
     dire=dire-1;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void m_sort(int vetor[],int aux[],int esq,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int meio;&lt;br /&gt;
   if (dire&amp;gt;esq) {&lt;br /&gt;
       meio=(dire+esq)/ 2;&lt;br /&gt;
       m_sort(vetor,aux,esq,meio);&lt;br /&gt;
       m_sort(vetor,aux,meio+1,dire);&lt;br /&gt;
       merge(vetor,aux,esq,meio+1,dire);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-30T21:05:05Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: /* Características: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
* Sua complexidade é n log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
* Alto consumo de memoria, devido a série de chamadas recursivas.&lt;br /&gt;
&lt;br /&gt;
* Por ser mais complexo que os outros algoritmos de ordenação, ele só é realmente mais rápido na prática quando n for suficientemente grande.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará a segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente comparam-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementação em C: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void mergeSort(int vetor[],int aux[],int tam) {&lt;br /&gt;
   m_sort(vetor,aux,0,tam-1);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void merge(int vetor[],int aux[],int esq,int meio,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int i,esq_fim,num_elementos,aux_pos;&lt;br /&gt;
&lt;br /&gt;
   esq_fim=meio-1;&lt;br /&gt;
   aux_pos=esq;&lt;br /&gt;
   num_elementos=dire-esq+1;&lt;br /&gt;
&lt;br /&gt;
   while ((esq&amp;lt;=esq_fim)&amp;amp;&amp;amp;(meio&amp;lt;=dire)) {&lt;br /&gt;
 &lt;br /&gt;
    if (vetor[esq]&amp;lt;=vetor[meio]) {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[esq];&lt;br /&gt;
      aux_pos=aux_pos+1;&lt;br /&gt;
      esq=esq+1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[meio];&lt;br /&gt;
      aux_pos=aux_pos + 1;&lt;br /&gt;
      meio=meio+1;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (esq&amp;lt;=esq_fim) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[esq];&lt;br /&gt;
     esq=esq+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (meio&amp;lt;=dire) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[meio];&lt;br /&gt;
     meio=meio+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;num_elementos;i++) {&lt;br /&gt;
 &lt;br /&gt;
     vetor[dire]=aux[dire];&lt;br /&gt;
     dire=dire-1;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void m_sort(int vetor[],int aux[],int esq,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int meio;&lt;br /&gt;
   if (dire&amp;gt;esq) {&lt;br /&gt;
       meio=(dire+esq)/ 2;&lt;br /&gt;
       m_sort(vetor,aux,esq,meio);&lt;br /&gt;
       m_sort(vetor,aux,meio+1,dire);&lt;br /&gt;
       merge(vetor,aux,esq,meio+1,dire);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-30T21:04:27Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: /* Características: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
* Sua complexidade é (n log n), sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
* Alto consumo de memoria, devido a série de chamadas recursivas.&lt;br /&gt;
&lt;br /&gt;
* Por ser mais complexo que os outros algoritmos de ordenação, ele só é realmente mais rápido na prática quando n for suficientemente grande.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará a segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente comparam-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementação em C: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void mergeSort(int vetor[],int aux[],int tam) {&lt;br /&gt;
   m_sort(vetor,aux,0,tam-1);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void merge(int vetor[],int aux[],int esq,int meio,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int i,esq_fim,num_elementos,aux_pos;&lt;br /&gt;
&lt;br /&gt;
   esq_fim=meio-1;&lt;br /&gt;
   aux_pos=esq;&lt;br /&gt;
   num_elementos=dire-esq+1;&lt;br /&gt;
&lt;br /&gt;
   while ((esq&amp;lt;=esq_fim)&amp;amp;&amp;amp;(meio&amp;lt;=dire)) {&lt;br /&gt;
 &lt;br /&gt;
    if (vetor[esq]&amp;lt;=vetor[meio]) {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[esq];&lt;br /&gt;
      aux_pos=aux_pos+1;&lt;br /&gt;
      esq=esq+1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[meio];&lt;br /&gt;
      aux_pos=aux_pos + 1;&lt;br /&gt;
      meio=meio+1;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (esq&amp;lt;=esq_fim) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[esq];&lt;br /&gt;
     esq=esq+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (meio&amp;lt;=dire) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[meio];&lt;br /&gt;
     meio=meio+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;num_elementos;i++) {&lt;br /&gt;
 &lt;br /&gt;
     vetor[dire]=aux[dire];&lt;br /&gt;
     dire=dire-1;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void m_sort(int vetor[],int aux[],int esq,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int meio;&lt;br /&gt;
   if (dire&amp;gt;esq) {&lt;br /&gt;
       meio=(dire+esq)/ 2;&lt;br /&gt;
       m_sort(vetor,aux,esq,meio);&lt;br /&gt;
       m_sort(vetor,aux,meio+1,dire);&lt;br /&gt;
       merge(vetor,aux,esq,meio+1,dire);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-29T22:38:13Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
* Sua complexidade é n&amp;lt;math&amp;gt;log[2]&amp;lt;/math&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
* O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
* Alto consumo de memoria, devido a série de chamadas recursivas.&lt;br /&gt;
&lt;br /&gt;
* Por ser mais complexo que os outros algoritmos de ordenação, ele só é realmente mais rápido na prática quando n for suficientemente grande.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará a segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente comparam-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementação em C: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void mergeSort(int vetor[],int aux[],int tam) {&lt;br /&gt;
   m_sort(vetor,aux,0,tam-1);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void merge(int vetor[],int aux[],int esq,int meio,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int i,esq_fim,num_elementos,aux_pos;&lt;br /&gt;
&lt;br /&gt;
   esq_fim=meio-1;&lt;br /&gt;
   aux_pos=esq;&lt;br /&gt;
   num_elementos=dire-esq+1;&lt;br /&gt;
&lt;br /&gt;
   while ((esq&amp;lt;=esq_fim)&amp;amp;&amp;amp;(meio&amp;lt;=dire)) {&lt;br /&gt;
 &lt;br /&gt;
    if (vetor[esq]&amp;lt;=vetor[meio]) {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[esq];&lt;br /&gt;
      aux_pos=aux_pos+1;&lt;br /&gt;
      esq=esq+1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[meio];&lt;br /&gt;
      aux_pos=aux_pos + 1;&lt;br /&gt;
      meio=meio+1;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (esq&amp;lt;=esq_fim) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[esq];&lt;br /&gt;
     esq=esq+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (meio&amp;lt;=dire) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[meio];&lt;br /&gt;
     meio=meio+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;num_elementos;i++) {&lt;br /&gt;
 &lt;br /&gt;
     vetor[dire]=aux[dire];&lt;br /&gt;
     dire=dire-1;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void m_sort(int vetor[],int aux[],int esq,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int meio;&lt;br /&gt;
   if (dire&amp;gt;esq) {&lt;br /&gt;
       meio=(dire+esq)/ 2;&lt;br /&gt;
       m_sort(vetor,aux,esq,meio);&lt;br /&gt;
       m_sort(vetor,aux,meio+1,dire);&lt;br /&gt;
       merge(vetor,aux,esq,meio+1,dire);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-29T22:33:08Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
- Sua complexidade é n&amp;lt;math&amp;gt;log[2]&amp;lt;/math&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
- Alto consumo de memoria, devido a série de chamadas recursivas.&lt;br /&gt;
&lt;br /&gt;
- Por ser mais complexo que os outros algoritmos de ordenação, ele só é realmente mais rápido na prática quando n for suficientemente grande.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará a segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente comparam-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementação em C: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void mergeSort(int vetor[],int aux[],int tam) {&lt;br /&gt;
   m_sort(vetor,aux,0,tam-1);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void merge(int vetor[],int aux[],int esq,int meio,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int i,esq_fim,num_elementos,aux_pos;&lt;br /&gt;
&lt;br /&gt;
   esq_fim=meio-1;&lt;br /&gt;
   aux_pos=esq;&lt;br /&gt;
   num_elementos=dire-esq+1;&lt;br /&gt;
&lt;br /&gt;
   while ((esq&amp;lt;=esq_fim)&amp;amp;&amp;amp;(meio&amp;lt;=dire)) {&lt;br /&gt;
 &lt;br /&gt;
    if (vetor[esq]&amp;lt;=vetor[meio]) {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[esq];&lt;br /&gt;
      aux_pos=aux_pos+1;&lt;br /&gt;
      esq=esq+1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[meio];&lt;br /&gt;
      aux_pos=aux_pos + 1;&lt;br /&gt;
      meio=meio+1;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (esq&amp;lt;=esq_fim) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[esq];&lt;br /&gt;
     esq=esq+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (meio&amp;lt;=dire) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[meio];&lt;br /&gt;
     meio=meio+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;num_elementos;i++) {&lt;br /&gt;
 &lt;br /&gt;
     vetor[dire]=aux[dire];&lt;br /&gt;
     dire=dire-1;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void m_sort(int vetor[],int aux[],int esq,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int meio;&lt;br /&gt;
   if (dire&amp;gt;esq) {&lt;br /&gt;
       meio=(dire+esq)/ 2;&lt;br /&gt;
       m_sort(vetor,aux,esq,meio);&lt;br /&gt;
       m_sort(vetor,aux,meio+1,dire);&lt;br /&gt;
       merge(vetor,aux,esq,meio+1,dire);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-29T02:50:05Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: /* Características: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
- Sua complexidade é n&amp;lt;math&amp;gt;log[2]&amp;lt;/math&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
- Alto consumo de memoria, devido a série de chamadas recursivas.&lt;br /&gt;
&lt;br /&gt;
- Por ser mais complexo que os outros algoritmos de ordenação, ele só é realmente mais rápido na prática quando n for suficientemente grande.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente comparam-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementação em C: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void mergeSort(int vetor[],int aux[],int tam) {&lt;br /&gt;
   m_sort(vetor,aux,0,tam-1);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void merge(int vetor[],int aux[],int esq,int meio,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int i,esq_fim,num_elementos,aux_pos;&lt;br /&gt;
&lt;br /&gt;
   esq_fim=meio-1;&lt;br /&gt;
   aux_pos=esq;&lt;br /&gt;
   num_elementos=dire-esq+1;&lt;br /&gt;
&lt;br /&gt;
   while ((esq&amp;lt;=esq_fim)&amp;amp;&amp;amp;(meio&amp;lt;=dire)) {&lt;br /&gt;
 &lt;br /&gt;
    if (vetor[esq]&amp;lt;=vetor[meio]) {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[esq];&lt;br /&gt;
      aux_pos=aux_pos+1;&lt;br /&gt;
      esq=esq+1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[meio];&lt;br /&gt;
      aux_pos=aux_pos + 1;&lt;br /&gt;
      meio=meio+1;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (esq&amp;lt;=esq_fim) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[esq];&lt;br /&gt;
     esq=esq+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (meio&amp;lt;=dire) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[meio];&lt;br /&gt;
     meio=meio+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;num_elementos;i++) {&lt;br /&gt;
 &lt;br /&gt;
     vetor[dire]=aux[dire];&lt;br /&gt;
     dire=dire-1;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void m_sort(int vetor[],int aux[],int esq,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int meio;&lt;br /&gt;
   if (dire&amp;gt;esq) {&lt;br /&gt;
       meio=(dire+esq)/ 2;&lt;br /&gt;
       m_sort(vetor,aux,esq,meio);&lt;br /&gt;
       m_sort(vetor,aux,meio+1,dire);&lt;br /&gt;
       merge(vetor,aux,esq,meio+1,dire);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-29T02:46:06Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: /* Características: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
- Sua complexidade é n&amp;lt;math&amp;gt;log[2]&amp;lt;/math&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort é um algoritmo recursivo.&lt;br /&gt;
&lt;br /&gt;
- Por ser mais complexo que os outros algoritmos de ordenação, ele só é realmente mais rápido na prática quando n for suficientemente grande.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente comparam-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementação em C: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void mergeSort(int vetor[],int aux[],int tam) {&lt;br /&gt;
   m_sort(vetor,aux,0,tam-1);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void merge(int vetor[],int aux[],int esq,int meio,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int i,esq_fim,num_elementos,aux_pos;&lt;br /&gt;
&lt;br /&gt;
   esq_fim=meio-1;&lt;br /&gt;
   aux_pos=esq;&lt;br /&gt;
   num_elementos=dire-esq+1;&lt;br /&gt;
&lt;br /&gt;
   while ((esq&amp;lt;=esq_fim)&amp;amp;&amp;amp;(meio&amp;lt;=dire)) {&lt;br /&gt;
 &lt;br /&gt;
    if (vetor[esq]&amp;lt;=vetor[meio]) {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[esq];&lt;br /&gt;
      aux_pos=aux_pos+1;&lt;br /&gt;
      esq=esq+1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[meio];&lt;br /&gt;
      aux_pos=aux_pos + 1;&lt;br /&gt;
      meio=meio+1;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (esq&amp;lt;=esq_fim) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[esq];&lt;br /&gt;
     esq=esq+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (meio&amp;lt;=dire) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[meio];&lt;br /&gt;
     meio=meio+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;num_elementos;i++) {&lt;br /&gt;
 &lt;br /&gt;
     vetor[dire]=aux[dire];&lt;br /&gt;
     dire=dire-1;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void m_sort(int vetor[],int aux[],int esq,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int meio;&lt;br /&gt;
   if (dire&amp;gt;esq) {&lt;br /&gt;
       meio=(dire+esq)/ 2;&lt;br /&gt;
       m_sort(vetor,aux,esq,meio);&lt;br /&gt;
       m_sort(vetor,aux,meio+1,dire);&lt;br /&gt;
       merge(vetor,aux,esq,meio+1,dire);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-29T02:23:57Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
- Sua complexidade é n&amp;lt;math&amp;gt;log[2]&amp;lt;/math&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente comparam-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementação em C: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void mergeSort(int vetor[],int aux[],int tam) {&lt;br /&gt;
   m_sort(vetor,aux,0,tam-1);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void merge(int vetor[],int aux[],int esq,int meio,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int i,esq_fim,num_elementos,aux_pos;&lt;br /&gt;
&lt;br /&gt;
   esq_fim=meio-1;&lt;br /&gt;
   aux_pos=esq;&lt;br /&gt;
   num_elementos=dire-esq+1;&lt;br /&gt;
&lt;br /&gt;
   while ((esq&amp;lt;=esq_fim)&amp;amp;&amp;amp;(meio&amp;lt;=dire)) {&lt;br /&gt;
 &lt;br /&gt;
    if (vetor[esq]&amp;lt;=vetor[meio]) {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[esq];&lt;br /&gt;
      aux_pos=aux_pos+1;&lt;br /&gt;
      esq=esq+1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[meio];&lt;br /&gt;
      aux_pos=aux_pos + 1;&lt;br /&gt;
      meio=meio+1;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (esq&amp;lt;=esq_fim) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[esq];&lt;br /&gt;
     esq=esq+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (meio&amp;lt;=dire) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[meio];&lt;br /&gt;
     meio=meio+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;num_elementos;i++) {&lt;br /&gt;
 &lt;br /&gt;
     vetor[dire]=aux[dire];&lt;br /&gt;
     dire=dire-1;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void m_sort(int vetor[],int aux[],int esq,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int meio;&lt;br /&gt;
   if (dire&amp;gt;esq) {&lt;br /&gt;
       meio=(dire+esq)/ 2;&lt;br /&gt;
       m_sort(vetor,aux,esq,meio);&lt;br /&gt;
       m_sort(vetor,aux,meio+1,dire);&lt;br /&gt;
       merge(vetor,aux,esq,meio+1,dire);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-29T02:20:02Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
- Sua complexidade é n&amp;lt;math&amp;gt;log[2]&amp;lt;/math&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente comparam-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementação em C: ==&lt;br /&gt;
{&lt;br /&gt;
void mergeSort(int vetor[],int aux[],int tam) {&lt;br /&gt;
   m_sort(vetor,aux,0,tam-1);&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
void merge(int vetor[],int aux[],int esq,int meio,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int i,esq_fim,num_elementos,aux_pos;&lt;br /&gt;
&lt;br /&gt;
   esq_fim=meio-1;&lt;br /&gt;
   aux_pos=esq;&lt;br /&gt;
   num_elementos=dire-esq+1;&lt;br /&gt;
&lt;br /&gt;
   while ((esq&amp;lt;=esq_fim)&amp;amp;&amp;amp;(meio&amp;lt;=dire)) {&lt;br /&gt;
 &lt;br /&gt;
    if (vetor[esq]&amp;lt;=vetor[meio]) {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[esq];&lt;br /&gt;
      aux_pos=aux_pos+1;&lt;br /&gt;
      esq=esq+1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
   &lt;br /&gt;
      aux[aux_pos]=vetor[meio];&lt;br /&gt;
      aux_pos=aux_pos + 1;&lt;br /&gt;
      meio=meio+1;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (esq&amp;lt;=esq_fim) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[esq];&lt;br /&gt;
     esq=esq+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   while (meio&amp;lt;=dire) {&lt;br /&gt;
 &lt;br /&gt;
     aux[aux_pos]=vetor[meio];&lt;br /&gt;
     meio=meio+1;&lt;br /&gt;
     aux_pos=aux_pos+1;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;num_elementos;i++) {&lt;br /&gt;
 &lt;br /&gt;
     vetor[dire]=aux[dire];&lt;br /&gt;
     dire=dire-1;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void m_sort(int vetor[],int aux[],int esq,int dire) {&lt;br /&gt;
&lt;br /&gt;
   int meio;&lt;br /&gt;
   if (dire&amp;gt;esq) {&lt;br /&gt;
       meio=(dire+esq)/ 2;&lt;br /&gt;
       m_sort(vetor,aux,esq,meio);&lt;br /&gt;
       m_sort(vetor,aux,meio+1,dire);&lt;br /&gt;
       merge(vetor,aux,esq,meio+1,dire);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-29T00:09:34Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
- Sua complexidade é n&amp;lt;math&amp;gt;log[2]&amp;lt;/math&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente comparam-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-28T23:45:29Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto o os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
- Sua complexidade é n&amp;lt;math&amp;gt;log[2]&amp;lt;/math&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é maior do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente compara-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-28T23:44:54Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto o os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
- Sua complexidade é n&amp;lt;math&amp;gt;log[2]&amp;lt;/math&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é menor do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente compara-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-28T23:44:31Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto o os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
- Sua complexidade é n&amp;lt;math&amp;gt;log[2]&amp;lt;/math&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14  -   50 64 20 77&lt;br /&gt;
&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
&lt;br /&gt;
15 99 -  52 14&lt;br /&gt;
&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
&lt;br /&gt;
15- 99&lt;br /&gt;
&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
&lt;br /&gt;
52 -14&lt;br /&gt;
&lt;br /&gt;
Como 52 é menor do que 14, a ordem é invertida:&lt;br /&gt;
&lt;br /&gt;
14 -52&lt;br /&gt;
&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
&lt;br /&gt;
15 99 -  14 52&lt;br /&gt;
&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
&lt;br /&gt;
15 -14&lt;br /&gt;
&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 X X X&lt;br /&gt;
&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará segunda posição:&lt;br /&gt;
&lt;br /&gt;
14 15 X X&lt;br /&gt;
&lt;br /&gt;
Agora simplesmente compara-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99&lt;br /&gt;
&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
&lt;br /&gt;
20 50 64 77&lt;br /&gt;
&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-28T23:43:03Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto o os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
- Sua complexidade é n&amp;lt;math&amp;gt;log[2]&amp;lt;/math&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Segue abaixo um exemplo de aplicação do Merge Sort para ordenar um vetor de 8 elementos:&lt;br /&gt;
&lt;br /&gt;
15 99 52 14 50 64 20 77&lt;br /&gt;
Divisão em duas partes:&lt;br /&gt;
15 99 52 14     50 64 20 77&lt;br /&gt;
Divisão da primeira parte em duas outras partes:&lt;br /&gt;
15 99   52 14&lt;br /&gt;
Análise do primeiro par:&lt;br /&gt;
15 99&lt;br /&gt;
Como 15 é menor do que 99, a ordem é mantida.&lt;br /&gt;
Análise do segundo par:&lt;br /&gt;
52 14&lt;br /&gt;
Como 52 é menor do que 14, a ordem é invertida:&lt;br /&gt;
14 52&lt;br /&gt;
Agora restam dois pares ordenados:&lt;br /&gt;
15 99   14 52&lt;br /&gt;
O algoritmo agora compara o menor valor de cada um dos dois vetores:&lt;br /&gt;
15 14&lt;br /&gt;
Como 14 é menor do que 15, esse valor será o primeiro da lista de 4 elementos:&lt;br /&gt;
14 X X X&lt;br /&gt;
Compara-se 15 com o outro elemento do segundo vetor. Como 15 é menor do que 52, 15 ocupará segunda posição:&lt;br /&gt;
14 15 X X&lt;br /&gt;
Agora simplesmente compara-se os dois elementos restantes. 99 é maior do que 52, logo 52 ocupará a terceira posição, e 99 a quarta posição neste vetor de 4 elementos:&lt;br /&gt;
14 15 52 99&lt;br /&gt;
O processo é repetido de forma idêntica para a outra primeira metade do vetor inicial, que apresentará a seguinte configuração:&lt;br /&gt;
20 50 64 77&lt;br /&gt;
Neste ponto tem-se dois vetores ordenados:&lt;br /&gt;
14 15 52 99 - 20 50 64 77&lt;br /&gt;
O próximo e último passo é fazer a fusão destes dois vetores, de forma similar àquela já feita, comparando o menor elemento de cada um dos dois vetores e posicionando o menor elemento ordenadamente na lista original.&lt;br /&gt;
Feito este processo, o resultado final será:&lt;br /&gt;
14 15 20 50 52 64 77 99&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-28T23:30:32Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto o os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
- Sua complexidade é n&amp;lt;math&amp;gt;log[2]&amp;lt;/math&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-28T23:30:16Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto o os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
- Sua complexidade é n&amp;lt;math&amp;gt;log2&amp;lt;/math&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-28T23:28:31Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto o os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
- Sua complexidade é n&amp;lt;math&amp;gt;log(2)&amp;lt;/math&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-28T23:28:19Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto o os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
- Sua complexidade é n&amp;lt;math&amp;gt;log&amp;lt;/math&amp;gt;n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-28T23:27:24Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto o os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
&lt;br /&gt;
- Sua complexidade é nlog(2)n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-28T23:26:22Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto o os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
- Sua complexidade é nlog(2)n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-28T23:26:10Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático húngaro John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Princípio de Funcionamento: ==&lt;br /&gt;
&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto o os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Características: ==&lt;br /&gt;
&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
- Sua complexidade é nlog(2)n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-28T23:25:26Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ordenação por intercalação (Merge Sort) é um algoritmo de ordenação muito utilizado em computação, criado pelo matemático John von Neumann (1903-1957).&lt;br /&gt;
&lt;br /&gt;
'''Princípio de Funcionamento:'''&lt;br /&gt;
O princípio básico de funcionamento do Merge Sort é simples e intuitivo: o algoritmo divide a lista a ser ordenada em várias sublistas, sempre em duas partes, até que as listas restantes contenham apenas um elemento. Após esta divisão o algoritmo faz o caminho inverso, ou seja, ele começa a &amp;quot;remontar&amp;quot; o vetor, porém ordenando os elementos (que estão em menor número) enquanto o os vetores maiores são recriados.&lt;br /&gt;
&lt;br /&gt;
'''Características:'''&lt;br /&gt;
- O Merge Sort necessita de um vetor auxiliar para funcionar, de tamanho igual ao do vetor a ser ordenado, o que constitui uma desvantagem deste algoritmo.&lt;br /&gt;
- Sua complexidade é nlog(2)n, sendo n o número de elementos que serão ordenados.&lt;br /&gt;
- O Merge Sort é considerado como o melhor algoritmo de ordenação já inventado, devido à sua simplicidade e eficiência.&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	<entry>
		<id>http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o</id>
		<title>Ordenação por Intercalação</title>
		<link rel="alternate" type="text/html" href="http://dainf.ct.utfpr.edu.br/wiki/index.php/Ordena%C3%A7%C3%A3o_por_Intercala%C3%A7%C3%A3o"/>
				<updated>2008-11-28T22:43:52Z</updated>
		
		<summary type="html">&lt;p&gt;Ddrv utfpr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Teste... :#&lt;/div&gt;</summary>
		<author><name>Ddrv utfpr</name></author>	</entry>

	</feed>