<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'>
Verdade..<div>Vou separar em duas funções e fazer as chamadas recursivas e ver se da certo!</div><div>Ta muito parecido com o seu. A maior diferença é na resposta.</div><div>A sua você criou um vetor do tamanho do vetor original e a partir que foram surgindo os menores valores você adotou i=1+i.</div><div>Correto?</div><div><br></div><div>Obrigada novamente!</div><div><br></div><div><br><div><div id="SkyDrivePlaceholder"></div>> From: beniltoncarvalho@gmail.com<br>> Date: Thu, 14 Mar 2013 13:12:49 -0300<br>> To: r-br@listas.c3sl.ufpr.br<br>> Subject: Re: [R-br] "Ordenação Mergesort"<br>> <br>> Pela "cara" do codigo, tudo o que vc precisa e' separar o codigo em<br>> duas funcoes... veja no que eu te mandei, que o mergesort chama ele<br>> proprio... e a ultima coisa e' fazer a ordenacao.<br>> <br>> Em 14 de março de 2013 12:37, Jackeline Bonetti Campos<br>> <jackebcampos@hotmail.com> escreveu:<br>> > Olá Elias.<br>> > É o merge sort.<br>> ><br>> > Benilton Carvalho,obrigada!<br>> > Vou olhar a sua implementação.<br>> > Não mandei o código inteiro. Somente a parte que está dando erro.<br>> ><br>> > Segue abaixo o código todo:<br>> ><br>> >  mergesort=function(x){ # Função que irá quebrar a entrada ao meio cada vez<br>> > que for acionada<br>> >         semisort=function(y,z){ #Função que vai juntando ordenadamente as<br>> > partes da entrada<br>> >                 resultado=NULL<br>> >                 while(length(y)>0 & length(z)>0){ # Enquanto tiver elemento<br>> > nos dois subvetores<br>> >                         if(y[1]<=z[1]){ # se o primeiro elemento do subvetor<br>> > a esquerda for menor que o primeiro elemento do subvetor a direita<br>> >                                 resultado=c(resultado,y[1])<br>> >                                 y=y[-1] # Tira o primeiro elemento do vetor,<br>> > já que ele já foi adicionado ao resultado<br>> >                         }<br>> >                         else{<br>> >                                 resultado=c(resultado,z[1])<br>> >                                 z=z[-1]<br>> >                         }<br>> >                 }<br>> >                 if(length(y)>0){ # A partir do momento que acaba os<br>> > elementos em uma das metades, me resta "copiar" o que sobrou  da outra<br>> > metade<br>> >                         resultado=c(resultado,y)<br>> >                 }<br>> >                 if(length(z)>0){<br>> >                         resultado=c(resultado,z)<br>> >                 }<br>> >                 return(resultado) # Retorna o resultado ordenado<br>> >         }<br>> >         tamanho=length(x) # Se a entrada tiver mais de um elemento, o<br>> > algoritmo irá "quebrar" a entrada ao "meio" para ordenar individualmente<br>> > cada entrada e depois juntar as metades já ordenadas<br>> >         if(tamanho>1){<br>> >                 meio= tamanho/2<br>> >                 esq=x[1:floor(meio)]<br>> >                 dit=x[floor(meio+1):tamanho]<br>> >                 esq=mergesort(esq)<br>> >                 dit=mergesort(dit)<br>> >                 if(esq[length(esq)]<=dit[1]){<br>> >                         return(c(esq,dit))<br>> >                 }<br>> >                 else{<br>> >                         semisort(esq,dit)<br>> >                 }<br>> >         }<br>> >         else{ # Se a entrada for um unico elemento, a ordenação dela é<br>> > trivial<br>> >                 return(x)<br>> >         }<br>> > }<br>> ><br>> > Att,<br>> > Jackeline.<br>> ><br>> ><br>> >> From: eliaskrainski@yahoo.com.br<br>> >> To: r-br@listas.c3sl.ufpr.br<br>> >> Date: Thu, 14 Mar 2013 16:27:03 +0100<br>> >> Subject: Re: [R-br] "Ordenação Mergesort"<br>> ><br>> >><br>> >> Curiosidade: Esse algoritmo e' o quick sort?<br>> >><br>> >><br>> >> _______________________________________________<br>> >> R-br mailing list<br>> >> R-br@listas.c3sl.ufpr.br<br>> >> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br<br>> >> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça<br>> >> código mínimo reproduzível.<br>> ><br>> > _______________________________________________<br>> > R-br mailing list<br>> > R-br@listas.c3sl.ufpr.br<br>> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br<br>> > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código<br>> > mínimo reproduzível.<br>> _______________________________________________<br>> R-br mailing list<br>> R-br@listas.c3sl.ufpr.br<br>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br<br>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.<br></div></div>                                       </div></body>
</html>