[R-br] "Ordenação Mergesort"

Jackeline Bonetti Campos jackebcampos em hotmail.com
Quinta Março 14 13:50:40 BRT 2013


Verdade..Vou separar em duas funções e fazer as chamadas recursivas e ver se da certo!Ta muito parecido com o seu. A maior diferença é na resposta.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.Correto?
Obrigada novamente!

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


Mais detalhes sobre a lista de discussão R-br