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

Benilton Carvalho beniltoncarvalho em gmail.com
Quinta Março 14 15:21:12 BRT 2013


vc precisa explicar como vc esta' executando a funcao... comigo ela
funciona como deveria:

x = rnorm(10)
mergesort(x)


Em 14 de março de 2013 15:10, Jackeline Bonetti Campos
<jackebcampos em hotmail.com> escreveu:
> Entendi.
> Porém , quando eu executo a função mergesort diz "vec não encontrado".
> Porque será?
>
> Att,
> Jackeline.
>
>> From: beniltoncarvalho em gmail.com
>> Date: Thu, 14 Mar 2013 13:56:40 -0300
>
>> To: r-br em listas.c3sl.ufpr.br
>> Subject: Re: [R-br] "Ordenação Mergesort"
>>
>> exato, eu uso o i+1 p nao ter q ficar redimensionando o vetor a todo
>> momento...
>>
>> Em 14 de março de 2013 13:50, Jackeline Bonetti Campos
>> <jackebcampos em hotmail.com> escreveu:
>> > 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.
>> >
>> > _______________________________________________
>> > 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.


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