<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>