Implemente uma função que recebe como entrada um vetor \(v\) e retorna um outro vetor com os mesmos elementos de \(v\) mas em ordem crescente a partir do algoritmo de Ordenação Bolha visto na última aula teórica.
Modifique as duas funções implementadas no Exercício 1 de forma que elas retornem, além do vetor ordenado, o número de comparações realizadas para ordenar o vetor. Toda vez que dois valores são comoarados para saber quem é o maior (ou menor) uma comparação deve ser contabilizada.
Modifique as duas funções implementadas no Exercício 1 de forma que elas retornem, além do vetor ordenado, o número de trocas realizadas para ordenar o vetor. Toda vez que é feita uma troca de elementos dentro do vetor, uma troca deve ser contabilizada.
Para a função recursiva do Exercício 1 coloque antes de cada troca de posição o comando plot(v)
, onde no lugar de v
deve entrar o nome que você deu ao vetor na sua função. Agora digite as linhas de comandos a seguir, onde novafuncao
é o nome da função modificada nesse exercícios. Veja os gráficos plotados e interprete.
v <- c(5,9,4,2,6,10,3,8,1,7)
w <- novafuncao(v)
plot(w)
Baseado na mesma ideia do algoritmo de Ordenação Bolha, escreva um pseudocódigo de uma função recursiva que recebe como entrada um vetor \(v\) e retorna um outro vetor com os mesmos elementos de \(v\) mas em ordem decrescent. Em seguida, implemente no R o pseudocódigo elaborado.
Implemente uma função que recebe como entrada um vetor \(v\) e retorna um outro vetor com os mesmos elementos de \(v\) mas em ordem crescente a partir do algoritmo de Ordenação Rápida visto na última aula teórica. Obs: tente fazer primeiro sem olhar a implementação feita na apostila e em sala de aula.
Modifique a função implementada no Exercício 6 acima de forma que ela retorne, além do vetor ordenado, o número de comparações realizadas para ordenar o vetor. Toda vez que dois valores são comparados para saber quem é o maior (ou menor) uma comparação deve ser contabilizada.
Modifique a função implementada no Exercício 6 acima de forma que ela retorne, além do vetor ordenado, o número de trocas realizadas para ordenar o vetor. Toda vez que é feita uma troca de elementos dentro do vetor, uma troca deve ser contabilizada, inclusive quando o pivo é trocado com alfum elemento para ser colocado na sua posição correta.
Baseado na mesma ideia do algoritmo de Ordenação Rápida, escreva um pseudocódigo de uma função recursiva que recebe como entrada um vetor \(v\) e retorna um outro vetor com os mesmos elementos de \(v\) mas em ordem dedecrescent. Em seguida, implemente no R o pseudocódigo elaborado.
Usando as funções implementadas nos Exercícios 2, 3, 7 e 8 verifique quantas comparações e quantas trocas cada um dos dois algoritmos de ordenação faz para ordenar os vetores a seguir. Obs: No R é possível comparar palavras com o comando <
. Por exemplo, digite no cursor o comando "aaa"<"aba"
e veja a resposta. Dessa forma você também pode passar como entrada para as funções implementadas um array de caracteres, como sugerido no item c.
v<-c(1,3,5,5,4,0,-1,2,6,-2)
v<-c(10,9,8,7,6,5,4,3,2,1)
v<-c("fabio","ana","pedro","bruno","bruna","maria","clara","julia","vicente","daniel")