ed_aula03

108
E STRUTURA DE D ADOS Prof. Dr. Daniel Caetano 2012 - 2 LISTAS LINEARES ORDENADAS

description

SI

Transcript of ed_aula03

  • ESTRUTURA DE DADOS

    Prof. Dr. Daniel Caetano

    2012 - 2

    LISTAS LINEARES ORDENADAS

  • Objetivos

    Entender o que uma lista ordenada

    Compreender o que muda com relao listas no ordenadas

    Implementar o mtodo Bubble-Sort

    GRUPOS? At o fim da aula!

  • Material de Estudo

    Material Acesso ao Material

    Notas de Aula http://www.caetano.eng.br/ (Aula 3)

    Apresentao http://www.caetano.eng.br/ (Aula 3)

    Material Didtico Estruturas de Dados Captulo 3, pginas 50 a 79

  • RECORDANDO...

  • Recordando...

    O que uma lista linear sequencial?

    Para que servem/como funcionam:

    Inicializar

    Inserir

    Remover

    Listar

    Buscar

  • LISTA LINEAR SEQUENCIAL ORDENADA

  • Listas Ordenadas

    O que muda da lista que vimos para a ordenada?

    Como gerar uma lista ordenada?

    Princpio do Quarto Arrumado:

    Se colocarmos tudo no lugar....

    ...ele estar sempre arrumado!

    Ordem... Qual ordem?

    Crescente

    Descrescente

  • OPERAES EM LISTA SEQUENCIAL ORDENADA

  • Listas Ordenadas - Inicializar

    Uma lista ordenada sequencial uma lista:

    nota:

    n: ???

    Como inicializar esta lista?

    nota:

    n: 0

    A inicializao igual em qualquer lista!

    0 1 2 3 4 5 6 7 8 9

    ? ? ? ? ? ? ? ? ? ?

    0 1 2 3 4 5 6 7 8 9

    ? ? ? ? ? ? ? ? ? ?

  • Listas Ordenadas - Inicializar

    Exerccio 1

    Crie um programa com uma lista de at 50 notas:

    float notas[50];

    int n;

    Inicialize a lista...

    Como era mesmo?

    Podemos criar uma funo que imprime os valores?

    listar(float v[], int n)

  • Listas Ordenadas - Inserir

    A lista inicial vazia...

    nota:

    n: 0

    Como inserir um elemento nela? Ex.: 11

    Crescente: procurar qual o primeiro elemento MAIOR que o atual...

    ...Se no achar, inserir no fim da lista

    nota:

    n: 1

    0 1 2 3 4 5 6 7 8 9

    ? ? ? ? ? ? ? ? ? ?

    0 1 2 3 4 5 6 7 8 9

    11 ? ? ? ? ? ? ? ? ?

  • Listas Ordenadas - Inserir

    Resultado:

    nota:

    n: 1

    Como inserir outro elemento? Ex.: 8

    Crescente: procurar 1 elemento MAIOR...

    Se encontrar, mover parte da lista adiante

    0 1 2 3 4 5 6 7 8 9

    11 ? ? ? ? ? ? ? ? ?

  • Listas Ordenadas - Inserir

    Resultado:

    nota:

    n: 1

    Crescente: procurar 1 elemento MAIOR...

    Se encontrar, mover parte da lista adiante

    E inserir novo elemento no lugar do 1 maior

    nota:

    n: 2

    0 1 2 3 4 5 6 7 8 9

    11 11 ? ? ? ? ? ? ? ?

    0 1 2 3 4 5 6 7 8 9

    8 11 ? ? ? ? ? ? ? ?

  • Listas Ordenadas - Inserir

    Resultado:

    nota:

    n: 2

    Como inserir outro elemento? Ex.: 10

    Crescente: procurar 1 elemento MAIOR...

    Se encontrar, mover parte da lista adiante

    0 1 2 3 4 5 6 7 8 9

    8 11 ? ? ? ? ? ? ? ?

  • Listas Ordenadas - Inserir

    Resultado:

    nota:

    n: 2

    Crescente: procurar 1 elemento MAIOR...

    Se encontrar, mover parte da lista adiante

    E inserir novo elemento no lugar do 1 maior

    nota:

    n: 3

    0 1 2 3 4 5 6 7 8 9

    8 11 11 ? ? ? ? ? ? ?

    0 1 2 3 4 5 6 7 8 9

    8 10 11 ? ? ? ? ? ? ?

  • Listas Ordenadas - Inserir

    Resultado:

    nota:

    n: 3

    Como inserir outro elemento? Ex.: 9

    Crescente: procurar 1 elemento MAIOR...

    Se encontrar, mover parte da lista adiante

    0 1 2 3 4 5 6 7 8 9

    8 10 11 ? ? ? ? ? ? ?

  • Listas Ordenadas - Inserir

    Resultado:

    nota:

    n: 3

    Como inserir outro elemento? Ex.: 9

    Crescente: procurar 1 elemento MAIOR...

    Se encontrar, mover parte da lista adiante

    0 1 2 3 4 5 6 7 8 9

    8 10 11 11 ? ? ? ? ? ?

  • Listas Ordenadas - Inserir

    Resultado:

    nota:

    n: 3

    Crescente: procurar 1 elemento MAIOR...

    Se encontrar, mover parte da lista adiante

    E inserir novo elemento no lugar do 1 maior

    nota:

    n: 4

    0 1 2 3 4 5 6 7 8 9

    8 10 10 11 ? ? ? ? ? ?

    0 1 2 3 4 5 6 7 8 9

    8 9 10 11 ? ? ? ? ? ?

  • Listas Ordenadas - Inserir

    Exerccio 2

    Vamos implementar uma funo de insero

    Prottipo:

    void inserirCresc(float v[], int &n, int max, float valor)

    Como usar isso no cdigo?

    Usurio digitar...

    ...enquanto valor for positivo

  • Listas Ordenadas - Buscar

    Como encontrar um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como encontrar a nota 8?

    Procurar do incio at o fim?

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8 8.2 8.4 9.2 9.8

  • Listas Ordenadas - Buscar

    Como encontrar um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como encontrar a nota 8?

    Procurar do incio at o fim?

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8 8.2 8.4 9.2 9.8

  • Listas Ordenadas - Buscar

    Como encontrar um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como encontrar a nota 8?

    Procurar do incio at o fim?

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8 8.2 8.4 9.2 9.8

  • Listas Ordenadas - Buscar

    Como encontrar um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como encontrar a nota 8?

    Procurar do incio at o fim?

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8 8.2 8.4 9.2 9.8

  • Listas Ordenadas - Buscar

    Como encontrar um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como encontrar a nota 8?

    Procurar do incio at o fim?

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8 8.2 8.4 9.2 9.8

  • Listas Ordenadas - Buscar

    Como encontrar um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como encontrar a nota 8?

    Procurar do incio at o fim?

    No tem um jeito melhor?

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8 8.2 8.4 9.2 9.8

  • Listas Ordenadas - Buscar

    Como encontrar um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como encontrar a nota 8?

    Vamos marcar o incio... 0

    Vamos marcar o fim... N-1 = 9

    Vamos marcar o meio (inteiro): (0+9)/2 = 4

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8 8.2 8.4 9.2 9.8

  • Listas Ordenadas - Buscar

    Como encontrar um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como encontrar a nota 8?

    O cara no elemento central maior ou menor que o procurado?

    Menor... o nmero procurado est acima!

    O elemento central + 1 o novo incio...

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8 8.2 8.4 9.2 9.8

  • Listas Ordenadas - Buscar

    Como encontrar um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como encontrar a nota 8?

    E calculamos o novo central: (5 + 9)/2 = 7

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8 8.2 8.4 9.2 9.8

  • Listas Ordenadas - Buscar

    Como encontrar um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como encontrar a nota 8?

    O cara no elemento central maior ou menor que o procurado?

    Maior... o nmero procurado est abaixo!

    O elemento central - 1 o novo fim...

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8 8.2 8.4 9.2 9.8

  • Listas Ordenadas - Buscar

    Como encontrar um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como encontrar a nota 8?

    E calculamos o novo central: (5 + 6)/2 = 5

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8 8.2 8.4 9.2 9.8

  • Listas Ordenadas - Buscar

    Como encontrar um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como encontrar a nota 8?

    O cara no elemento central maior ou menor que o procurado?

    Igual!

    Achamos o elemento!

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8 8.2 8.4 9.2 9.8

  • Listas Ordenadas - Buscar

    Como encontrar um elemento nessa lista?

    nota:

    n: 10

    Busca simples: 6 passos de comparao

    Busca binria: 3 passos de comparao

    Caso mdio: busca binria mais rpida!

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8 8.2 8.4 9.2 9.8

  • Listas Ordenadas - Buscar

    Exerccio 3

    Vamos implementar uma funo de busca

    Prottipo:

    void buscaBinaria(float v[], int n, float valor)

    Como usar isso no cdigo?

    Usurio digita nmero

    ...programa imprime posio onde valor foi encontrado!

  • Listas Ordenadas - Remover

    Como remover um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como remover a nota 8?

    Procurar a posio dela com a busca binria

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8 8.2 8.4 9.2 9.8

  • Listas Ordenadas - Remover

    Como remover um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como remover a nota 8?

    Procurar a posio dela com a busca binria

    Copiar todos os elementos posteriores para trs

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8 8.2 8.4 9.2 9.8

  • Listas Ordenadas - Remover

    Como remover um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como remover a nota 8?

    Procurar a posio dela com a busca binria

    Copiar todos os elementos posteriores para trs

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8.2 8.2 8.4 9.2 9.8

  • Listas Ordenadas - Remover

    Como remover um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como remover a nota 8?

    Procurar a posio dela com a busca binria

    Copiar todos os elementos posteriores para trs

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8.2 8.4 8.4 9.2 9.8

  • Listas Ordenadas - Remover

    Como remover um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como remover a nota 8?

    Procurar a posio dela com a busca binria

    Copiar todos os elementos posteriores para trs

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8.2 8.4 9.2 9.2 9.8

  • Listas Ordenadas - Remover

    Como remover um elemento nessa lista?

    nota:

    n: 10

    Ex.: Como remover a nota 8?

    Procurar a posio dela com a busca binria

    Copiar todos os elementos posteriores para trs

    Descontar um da quantidade...

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8.2 8.4 9.2 9.8 9.8

  • Listas Ordenadas - Remover

    Como remover um elemento nessa lista?

    nota:

    n: 9

    Ex.: Como remover a nota 8?

    Procurar a posio dela com a busca binria

    Copiar todos os elementos posteriores para trs

    Descontar um da quantidade...

    0 1 2 3 4 5 6 7 8 9

    1 3.5 7 7.5 7.7 8.2 8.4 9.2 9.8 9.8

  • Listas Ordenadas - Remover

    Exerccio 4

    Vamos implementar uma funo de remoo

    Prottipo:

    void remover(float v[], int &n, float valor)

    Como usar isso no cdigo?

    Usurio digita nmero...

    ...programa remove o valor indicado!

  • ORDENAO DE LISTAS

  • Ordenao de Listas

    Muitas vezes temos uma lista que queremos ordenar...

    Lista de contatos, cadastro de funcionrios...

    Mas o que ordenar?

    Crescente: i1 i2 i3 i4 ... iN

    Descrescente: i1 i2 i3 i4 ... iN

  • Ordenao de Listas

    Para ordenar uma lista, h 3 tipos bsicos de ordenao

    Por troca de elementos

    Por insero de elementos

    Por seleo de elementos

    Nesta aula: ordenao por troca...

    Bubble Sort

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    7 8 5 6 10 1.5 7 6.5 9.2 7

    i=0

    7 8... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    7 8 5 6 10 1.5 7 6.5 9.2 7

    i=1

    8 > 5... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    7 5 8 6 10 1.5 7 6.5 9.2 7

    i=2

    8 > 6... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    7 5 6 8 10 1.5 7 6.5 9.2 7

    i=3

    8 10... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    7 5 6 8 10 1.5 7 6.5 9.2 7

    i=4

    10 > 1.5... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    7 5 6 8 1.5 10 7 6.5 9.2 7

    i=5

    10 > 7... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    7 5 6 8 1.5 7 10 6.5 9.2 7

    i=6

    10 > 6.5... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    7 5 6 8 1.5 7 6.5 10 9.2 7

    i=7

    10 > 9.2... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    7 5 6 8 1.5 7 6.5 9.2 10 7

    i=8

    10 > 7... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    7 5 6 8 1.5 7 6.5 9.2 7 10

    i=0

    7 > 5... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 7 6 8 1.5 7 6.5 9.2 7 10

    i=1

    7 > 6... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 7 8 1.5 7 6.5 9.2 7 10

    i=2

    7 8... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 7 8 1.5 7 6.5 9.2 7 10

    i=3

    8 > 1.5... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 7 1.5 8 7 6.5 9.2 7 10

    i=4

    8 > 7... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 7 1.5 7 8 6.5 9.2 7 10

    i=5

    8 > 6.5... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 7 1.5 7 6.5 8 9.2 7 10

    i=6

    8 9.2... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 7 1.5 7 6.5 8 9.2 7 10

    i=7

    9.2 > 7... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 7 1.5 7 6.5 8 7 9.2 10

    i=8

    9.2 10... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 7 1.5 7 6.5 8 7 9.2 10

    i=0

    5 6... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 7 1.5 7 6.5 8 7 9.2 10

    i=1

    6 7... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 7 1.5 7 6.5 8 7 9.2 10

    i=2

    7 > 1.5... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 1.5 7 7 6.5 8 7 9.2 10

    i=3

    7 7... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 1.5 7 7 6.5 8 7 9.2 10

    i=4

    7 > 6.5... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 1.5 7 6.5 7 8 7 9.2 10

    i=5

    7 8... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 1.5 7 6.5 7 8 7 9.2 10

    i=6

    8 > 7... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 1.5 7 6.5 7 7 8 9.2 10

    i=7

    8 9.2... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 1.5 7 6.5 7 7 8 9.2 10

    i=8

    9.2 10... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 1.5 7 6.5 7 7 8 9.2 10

    i=0

    5 6... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 6 1.5 7 6.5 7 7 8 9.2 10

    i=1

    6 > 1.5... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 1.5 6 7 6.5 7 7 8 9.2 10

    i=2

    6 7... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 1.5 6 7 6.5 7 7 8 9.2 10

    i=3

    7 > 6.5... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 1.5 6 6.5 7 7 7 8 9.2 10

    i=4

    7 7... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 1.5 6 6.5 7 7 7 8 9.2 10

    i=5

    7 7... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 1.5 6 6.5 7 7 7 8 9.2 10

    i=6

    7 8... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 1.5 6 6.5 7 7 7 8 9.2 10

    i=7

    8 9.2... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 1.5 6 6.5 7 7 7 8 9.2 10

    i=8

    9.2 10... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    5 1.5 6 6.5 7 7 7 8 9.2 10

    i=0

    5 > 1.5... Inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=1

    5 6... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=2

    6 6.5... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=3

    6.5 7... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=4

    7 7... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=5

    7 7... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=6

    7 8... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=7

    8 9.2... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=8

    9.2 10... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=0

    1.5 5... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=1

    5 6... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=2

    6 6.5... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=3

    6.5 7... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=4

    7 7... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=5

    7 7... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=6

    7 8... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=7

    8 9.2... No inverte!

  • Ordenao de Listas

    Como ordenar (crescente) esta lista?

    nota:

    n: 10

    A ideia do bubble sort trocar elementos dois a dois, fazendo o maior ir parar no fim

    Veja s...

    0 1 2 3 4 5 6 7 8 9

    1.5 5 6 6.5 7 7 7 8 9.2 10

    i=8

    9.2 10... No inverte!

    O que aconteceu de diferente neste ltimo

    passo?

  • Ordenao de Listas

    Exerccio 5

    Vamos implementar uma funo de ordenao

    Prottipo:

    void bubbleSort(float v[], int n)

    Vamos ler a lista sem ordem

    E ordenar depois!

  • Ordenao de Listas

    Exerccio 6

    possvel otimizar um pouco a ordenao?

  • EXERCCIO DE FIXAO

  • Exerccio Crie uma lista no ordenada de inteiros

    int i[10] = { 10, 9, 8, 5, 4, 3, 2, 1, 7, 6 };

    int n;

    Use o bubble sort para orden-la

    Faa um menu que permita: 1) Inserir em lista ordenada

    2) Remover da lista ordenada

    3) Busca binria

    4) Listar os dados

    5) Terminar o programa

    Faa uma funo para cada item

  • ENTREGA DOS GRUPOS DE TRABALHO

  • CONCLUSES

  • Resumo

    possvel criar listas ordenadas e mant-las

    possvel ordenar listas

    Processos custosos computacionalmente

    TAREFA

    Atividade Estruturada 1!

  • Prxima Aula

    H outros mtodos de ordenao?

    Sim, melhores!

    Por insero

    Por seleo

  • PERGUNTAS?

  • BOM DESCANSO A TODOS!