Você está na página 1de 26

Ordenação

Leitura e Escrita de Planilhas xLSX

Marcelo Finger

09/04/2018
O Conceito

Ordenação por Bolhas

Leitura de planilhas xlsx


O Conceito
Ordenação

I Entrada: uma sequência de dados


I Saída: a sequência reordenada de acordo com alguma ordem
I Ordens podem ser:
I numérica
I lexicográfica
I outro
I Podemos ter ordenações
I ascendentes
I descendentes, etc
Métodos de Ordenaçao

I Existem inúmeros métodos de ordenação


I Vamos nos ocupar com métodos in loco
I Não copiam o dado ou criam novas estruturas
Ordenaçao por seleção

Ideia básica: mover o menor elemento da lista para o topo.


Exemplo: 4,9,4,7,2,1
Ordenaçao por seleção (1)

I
4

9

4

7

2

1
Ordenaçao por seleção (2)

I II
4 1
— —
9 9
— —
4 4
— —
7 7
— —
2 2
— —
1 4
Ordenaçao por seleção (3)

I II III
4 1 1
— — —
9 9 2
— — —
4 4 4
— — —
7 7 7
— — —
2 2 9
— — —
1 4 4
Ordenaçao por seleção (4)
I II III IV
4 1 1 1
— — — —
9 9 2 2
— — — —
4 4 4 4
— — — —
7 7 7 7
— — — —
2 2 9 9
— — — —
1 4 4 4

## Ordenação por seleção (5)

I II III IV V
4 1 1 1 1
Ordenação por Bolhas
Uma ideia melhor!

I buscar pelo menor elemento mantém o vetor ordenado


I Ideia: bolhas que buscam o menor elemento e vão ordenando
a sequência
I Bolha: duas posições vizinhas na sequencia
I Se a bolha está desordenada, inverter os elementos
I Bolha “anda” do final,para o começo
Trajetória de uma bolha (1)

I II III IV V VI
4 4 4 4 4 1
— — — — — —
9 9 9 9 1 4
— — — — — —
4 4 4 1 9 9
— — — — — —
1 1 1 4 4 4
— — — — — —
2 2 2 2 2 2
— — — — — —
7 7 7 7 7 7
Trajetória de uma bolha (2)
I II III IV V
1 1 1 1 1
— — — — —
4 4 4 4 2
— — — — —
9 9 9 2 4
— — — — —
4 4 2 9 9
— — — — —
2 2 4 4 4
— — — — —
7 7 7 7 7

Exercício: fazer as demais trajetórias.


Note: é possível que esta ordenado ANTES da última trajetória
Troca de posiçõies num vetor (I)

Figure 1
Troca de posiçõies num vetor (I)

Figure 2
Troca de posiçõies num vetor (I)
Troca de posiçõies num vetor (I)

Figure 4
Troca de posiçõies num vetor (I)

Figure 5
Programa de troca

Trocar as posições i e j de um vetor necessita de uma variável


auxiliar

aux <- v[i]


v[i] <- v[j]
v[j] <- aux

mudou <- TRUE


Estrutura de dados da ordenaçãompor bolhas

I Quando não há nenhuma mudança num passo da bolha, a lista


já está ordenada!!!
I Dado um vetor v, vamos construir uma lista de ordenação

ord <- list( vet = v, mudando = TRUE)

I O passo da bolha
I recebe ord, e as posições de inicio e fim do vetor
I devolve ord com a bolha indo do fim ao início
Passo da Bolha

# Realiza um passo de ordenaçção por bolha


# em ord$vet[inicio,fim]
passoDeBolha <- function( ord, inicio, fim ) {
ord$mudando <- FALSE
for( i in (fim-1):inicio ) {
if( ord$vet[i] > ord$vet[i+1] ) { # Bolha fora de o
aux <- ord$vet[i]
ord$vet[i] <- ord$vet[i+1]
ord$vet[i+1] <- aux
ord$mudando <- TRUE
}
}
return(ord)
}
Ordenaçlão por bolhas (principal)

ordenaPorBolhas <- function(v) {


ord <- list( vet = v, mudando = TRUE)
i <- 1
while( i<length(v) && ord$mudando ) {
ord <- passoDeBolha(ord, i, length(v))
}
return(ord$vet)
}
Leitura de planilhas xlsx
Instalando o pacote

install.packages(xlsx)

Ativação da biblioteca

library(xlsx)

## Loading required package: rJava

## Loading required package: xlsxjars


Lendo uma plkanilha num dataframe

df <- read.xlsx("Notas.xlsx",1)
df

## Aluno NUSP email nota


## 1 Aarão 123-4 a@mac113.br 6.0
## 2 Berengário 234-5 b@mac113.br 4.0
## 3 Cosima 345-6 <NA> 7.0
## 4 Duilio 456-7 <NA> 3.0
## 5 Emengarda 567-8 <NA> 5.0
## 6 Filisbina 678-9 f@mac113.br 4.5
## 7 Guilhermina 789-0 g@mac113.br 9.0
## 8 Hobbit 890-1 <NA> 9.5
## 9 Mozart 901-2 m@mac113.br 10.0
## 10 Zozimo 012-3 z@mac113.br 2.9

Você também pode gostar