INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor...

34
INE5603 Introdu¸ ao ` a POO Prof. A. G. Silva 16 de outubro de 2017 Prof. A. G. Silva INE5603 Introdu¸ ao ` a POO 16 de outubro de 2017 1 / 34

Transcript of INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor...

Page 1: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

INE5603 Introducao a POO

Prof. A. G. Silva

16 de outubro de 2017

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 1 / 34

Page 2: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Processamentos de vetor

Media e desvio padrao

Maximo (mınimo)

Argmax

OrdenacaoI BolhaI SelecaoI Insercao

Metodos de busca – busca binaria

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 2 / 34

Page 3: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Algoritmos em vetor – media e desvio padrao (I)

import java.lang.Math;

class Vetor {

protected double v[];

public Vetor(double vet[]) {

v = new double[vet.length ];

for (int i=0; i<vet.length; i++)

v[i] = vet[i];

}

public double media() {

double m = 0.0;

for (int i=0; i<v.length; i++)

m = m + v[i];

return m / v.length;

}

public double desvioPadrao () {

double m = media();

double s = 0.0;

for (int i=0; i<v.length; i++)

s = s + Math.pow(v[i]-m, 2);

return Math.sqrt(s / v.length);

}

}

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 3 / 34

Page 4: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Algoritmos em vetor – media e desvio padrao (II)

public class VetorEx {

public static void main(String [] args) {

double vet[] = {2.5, 3.0, 2.8, 3.1, 2.4};

Vetor V;

V = new Vetor(vet);

System.out.println("Media: " + V.media());

System.out.println("Desvio padrao: " + V.desvioPadrao ());

}

}

$ javac VetorEx.java

$ java VetorEx

Media: 2.7600000000000002

Desvio padrao: 0.27276363393971714

https://www.inf.ufsc.br/˜alexandre.silva/courses/16s1/ine5603/codigos/VetorEx.java

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 4 / 34

Page 5: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Algoritmos em vetor – valor maximo (I)

Tomar o primeiro elemento (posicao i=0) como o maior, guardandoseu valor em uma variavel maximo

Verificar se o valor do elemento do vetor da posicao seguinte (i=i+1)e maior que maximo

I Se for, substituir maximo pelo valor do elemento desta posicaoI Se nao for, verificar o elemento da posicao seguinte (i=i+1)I Repetir ate que nao haja mais elemento a verificar (apos atingir o

comprimento total do vetor)

A variavel maximo contera o maior valor do vetor

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 5 / 34

Page 6: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Algoritmos em vetor – valor maximo (exemplo)

5 3 7 6 2 9 8 4

0 1 2 3 4 5 6 7

i = 0

maximo = v[0] = 5

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 6 / 34

Page 7: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Algoritmos em vetor – valor maximo (exemplo)

5 3 7 6 2 9 8 4

0 1 2 3 4 5 6 7

i = 1

maximo = 5

v[1] > maximo ?I Nao (3 < 5): nada a fazer

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 7 / 34

Page 8: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Algoritmos em vetor – valor maximo (exemplo)

5 3 7 6 2 9 8 4

0 1 2 3 4 5 6 7

i = 2

maximo = 5

v[2] > maximo ?I Sim (7 > 5): maximo = 7

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 8 / 34

Page 9: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Algoritmos em vetor – valor maximo (exemplo)

5 3 7 6 2 9 8 4

0 1 2 3 4 5 6 7

i = 3

maximo = 7

v[3] > maximo ?I Nao (6 < 7): nada a fazer

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 9 / 34

Page 10: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Algoritmos em vetor – valor maximo (exemplo)

5 3 7 6 2 9 8 4

0 1 2 3 4 5 6 7

i = 4

maximo = 7

v[4] > maximo ?I Nao (2 < 7): nada a fazer

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 10 / 34

Page 11: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Algoritmos em vetor – valor maximo (exemplo)

5 3 7 6 2 9 8 4

0 1 2 3 4 5 6 7

i = 5

maximo = 7

v[5] > maximo ?I Sim (9 > 7): maximo = 9

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 11 / 34

Page 12: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Algoritmos em vetor – valor maximo (exemplo)

5 3 7 6 2 9 8 4

0 1 2 3 4 5 6 7

i = 6

maximo = 9

v[6] > maximo ?I Nao (8 < 9): nada a fazer

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 12 / 34

Page 13: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Algoritmos em vetor – valor maximo (exemplo)

5 3 7 6 2 9 8 4

0 1 2 3 4 5 6 7

i = 7

maximo = 9

v[7] > maximo ?I Nao (4 < 9): nada a fazer

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 13 / 34

Page 14: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Algoritmos em vetor – valor maximo (III)

Implementacao

import java.lang.Math;

class Vetor {

protected double v[];

/*

...

*/

public double valorMaximo () {

double maximo = v[0];

for (int i=1; i<v.length; i++)

if (v[i] > maximo)

maximo = v[i];

return maximo;

}

}

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 14 / 34

Page 15: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Exercıcio 1

Considerando a classe Vetor dada:I https://www.inf.ufsc.br/˜alexandre.silva/courses/16s1/ine5603/

exercicios/VetorEx.java

Acrescente um metodo que determine o ındice do maior valor novetor (arg max). Exemplo: para o vetor a seguir, o ındice do maiorvalor e 5 (posicao na qual se encontra o maximo igual a 9)

5 0 7 6 2 9 8 4

0 1 2 3 4 5 6 7

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 15 / 34

Page 16: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodos simples de ordenacaoTempo de execucao proporcional a n2, ou seja O(n2), para n valoresImplementacoes:https://www.inf.ufsc.br/˜alexandre.silva/courses/16s1/ine5603/codigos/OrdenacaoEx.java

Sugestao de classe:class Ordenacao {

protected double v[];

public Ordenacao(double vet[]) {

/* ... */

}

public void bolha() { // bubble sort

/* ... */

}

public void bolha_melhorado () { // bubble sort

/* ... */

}

public void selecao () { // selection sort

/* ... */

}

public void insercao () { // insertion sort

/* ... */

}

}

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 16 / 34

Page 17: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodo da bolha – bubble sort

public void bolha() { // bubble sort

double aux;

for (int i=0; i<v.length; i++) {

for (int j=0; j<v.length -i-1; j++) {

if (v[j] > v[j+1]) {

aux = v[j];

v[j] = v[j+1];

v[j+1] = aux;

}

}

}

}

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 17 / 34

Page 18: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodo da bolha melhorado – bubble sort

public void bolha_melhorado () { // bubble sort

double aux;

boolean TROCA;

for (int i=0; i<v.length; i++) {

TROCA = false;

for (int j=0; j<v.length -i-1; j++) {

if (v[j] > v[j+1]) {

aux = v[j];

v[j] = v[j+1];

v[j+1] = aux;

TROCA = true;

}

}

if ( ! TROCA )

break;

}

}Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 18 / 34

Page 19: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodo da bolha – bubble sort

Normal

20 30 28 31 24 60 45 50

20 28 30 24 31 45 50 60

20 28 24 30 31 45 50 60

20 24 28 30 31 45 50 60

20 24 28 30 31 45 50 60

20 24 28 30 31 45 50 60

20 24 28 30 31 45 50 60

20 24 28 30 31 45 50 60

20 24 28 30 31 45 50 60

Melhorado

20 30 28 31 24 60 45 50

20 28 30 24 31 45 50 60

20 28 24 30 31 45 50 60

20 24 28 30 31 45 50 60

20 24 28 30 31 45 50 60

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 19 / 34

Page 20: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodo da selecao – selection sort

1 Particao vai de 0 ate k (onde k e o tamanho do vetor menos um)

2 Trocar o maior elemento do vetor (maximo) com a ultima posicao daparticao

3 k = k − 1, voltar ao passo 1

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 20 / 34

Page 21: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodo da selecao – selection sort

5 0 7 6 2 9 8 4

0 1 2 3 4 5 6 7

↓ ↑

5 0 7 6 2 4 8 9

0 1 2 3 4 5 6 7

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 21 / 34

Page 22: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodo da selecao – selection sort

5 0 7 6 2 4 8 9

0 1 2 3 4 5 6 7

↓↑

5 0 7 6 2 4 8 9

0 1 2 3 4 5 6 7

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 22 / 34

Page 23: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodo da selecao – selection sort

5 0 7 6 2 4 8 9

0 1 2 3 4 5 6 7

↓ ↑

5 0 4 6 2 7 8 9

0 1 2 3 4 5 6 7

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 23 / 34

Page 24: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodo da selecao – selection sort

5 0 4 6 2 7 8 9

0 1 2 3 4 5 6 7

↓ ↑

5 0 4 2 6 7 8 9

0 1 2 3 4 5 6 7

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 24 / 34

Page 25: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodo da selecao – selection sort

5 0 4 2 6 7 8 9

0 1 2 3 4 5 6 7

↓ ↑

2 0 4 5 6 7 8 9

0 1 2 3 4 5 6 7

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 25 / 34

Page 26: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodo da selecao – selection sort

2 0 4 5 6 7 8 9

0 1 2 3 4 5 6 7

↓↑

2 0 4 5 6 7 8 9

0 1 2 3 4 5 6 7

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 26 / 34

Page 27: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodo da selecao – selection sort

2 0 4 5 6 7 8 9

0 1 2 3 4 5 6 7

↓ ↑

0 2 4 5 6 7 8 9

0 1 2 3 4 5 6 7

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 27 / 34

Page 28: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodo da selecao – selection sort

public void selecao () { // selection sort

double aux;

int posMaior;

for (int i=0; i<v.length; i++) {

posMaior = 0;

for (int j=1; j<v.length -i; j++) {

if (v[j] > v[posMaior ])

posMaior = j;

}

aux = v[posMaior ];

v[posMaior] = v[v.length -i-1];

v[v.length -i-1] = aux;

}

}

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 28 / 34

Page 29: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodo da selecao – selection sort

[20 30 28 31 24 60 45 50]

^ ^

[20 30 28 31 24 50 45] 60

^ ^

[20 30 28 31 24 45] 50 60

^^

[20 30 28 31 24] 45 50 60

^ ^

[20 30 28 24] 31 45 50 60

^ ^

[20 24 28] 30 31 45 50 60

^^

[20 24] 28 30 31 45 50 60

^^

[20] 24 28 30 31 45 50 60

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 29 / 34

Page 30: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodo da insercao – insertion sort

public void insercao () { // insertion sort

double aux;

int i, j;

for (i=1; i<v.length; i++) {

aux = v[i];

j = i - 1;

while (j >= 0 && v[j] > aux) {

v[j+1] = v[j];

j--;

}

v[j+1] = aux;

}

}

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 30 / 34

Page 31: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodo da insercao – insertion sort

[20] 30< 28 31 24 60 45 50

^

[20 30] 28< 31 24 60 45 50

^

[20 28 30] 31< 24 60 45 50

^

[20 28 30 31] 24< 60 45 50

^

[20 24 28 30 31] 60< 45 50

^

[20 24 28 30 31 60] 45< 50

^

[20 24 28 30 31 45 60] 50<

^

[20 24 28 30 31 45 50 60]

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 31 / 34

Page 32: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Exercıcio 2

Para cada metodo de ordenacao, calcule:

I Numero de comparacoes realizadas

I Numero de trocas efetuadas

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 32 / 34

Page 33: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Metodos de busca

Normalmente utiliza-se um valor numerico como chave primaria(identificador exclusivo) de busca. Por exemplo, matrıcula do aluno

A busca por um determinado valor pode ser eficientementeimplementada em um vetor ordenado por meio de:

I Busca binaria: verifica-se o elemento do meio da particao; se valornesta posicao e igual, encontrou (finaliza); se maior, a busca e repetidana primeira metade; se menor, e repetida na segunda metade

I Busca por interpolacao linear: verifica-se o elemento dado pelainterpolacao linear dos dois valores nas posicoes extremas da particao;se valor nesta posicao e igual, encontrou (finaliza); se maior, repete-separa a primeira parte; caso contrario, repete-se para a segunda parte

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 33 / 34

Page 34: INE5603 Introdu˘c~ao a POOalexandre.goncalves.silva/courses/17s2/ine... · Processamentos de vetor M edia e desvio padr~ao M aximo (m nimo) Argmax Ordena˘c~ao I Bolha I Sele˘c~ao

Exercıcio 3

Dado um vetor qualquer, ordene-o por qualquer metodo e implementea busca binaria.

Material:I https://www.inf.ufsc.br/˜alexandre.silva/courses/16s1/ine5603/

codigos/OrdenacaoEx.java

Prof. A. G. Silva INE5603 Introducao a POO 16 de outubro de 2017 34 / 34