<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>
Olá!<div>Procurei no fórum e não encontrei nenhum post a respeito desse tipo de ordenação.</div><div>Esse algorítimo quebra o vetor de tamanho n em subvetores e se chama recursivamente até que os subvetores tenham tamanho 1.</div><div>Depois, compara dois subvetores colando na posição 1 o subvetor menor e na posição 2 o subvetor maior.</div><div>E depois volta a comparar os subvetores à direita e à esquerda até ter o vetor original ordenado.</div><div><br></div><div>Estou implementando esse algoritmo porém, não estou conseguindo dividir o vetor até que length seja = 1.</div><div><br></div><div><div>mergesort=function(x){ # Função que irá dividir o subvetor ao meio</div><div>        subsort=function(y,z){ #Função que vai juntando ordenadamente as partes da entrada</div><div>                resultado=NULL </div><div><br></div><div><div>tam=length(x) # Se a entrada tiver mais de um elemento, o algoritmo irá "quebrar" a entrada ao "meio" para ordenar individualmente cada entrada e depois juntar as metades já ordenadas</div><div>        if(tamanho>1)</div><div>             {</div><div>                meio= tam/2</div><div>                esq=c[1:flor(meio)]</div><div>                dit=c[(meio+1):tam] </div><div>                esq=mergesort(esq) #vou ter que ficar aplicando o mergesort até o vetor da esquerda ter um elemento.</div><div>                dit=mergesort(dit) #vou ter que ficar aplicando o mergesort até o vetor da direita ter um elemento</div><div>                if(esq[length(esq)]<=dit[1])  #se o vetor da esquerda do tamanho da esquerda (que deve ser um) for menor ou igual a 1</div><div>                {</div><div>                        return(c(esq,dit))      #na hora de juntar o subvetor da esquerda fica primeiro.</div><div>                }</div><div>                else</div><div>                {</div><div>                        subsort(esq,dit) #subsort é o vetor temporário.</div><div>                }</div><div>        }</div><div>        else  # Se a entrada for um único elemento não existe ordenação. Se TAM<1. devolve o elemento.</div><div>        {</div><div>                return(x)</div><div>        }</div></div></div><div><br></div><div><br></div><div>Obrigada!</div><div><br></div><div>Att,</div><div>Jackeline</div>                                         </div></body>
</html>