Algoritmos e Programação I

Propaganda
Algoritmos e
Programação I
Ordenação
FACOM-UFMS
Nesta aula
• Manipulação de vetores
• Ordenação
Vetores
• Um vetor não pode ser copiado em outro
usando atribuição
• O seguinte trecho de código é inválido:
int numeros[5]
int v_aux[5];
...
v_aux = numeros;
=
...
{3,
7,
12,
24,
45};
Vetores
• Posições de um vetor podem ser trocadas
• Desejamos trocar os valores dos índices 1 e 3
do vetor:
Vetores
• Forma incorreta:
Vetores
• É necessário termos uma variável temporária
Vetores
• O seguinte trecho de código realiza a troca
int
int
...
numeros[5]
=
...
{3,
temp
=
numeros[3]
=
numeros[1] = temp;
7,
12,
24,
45};
temp;
numeros[3];
numeros[1];
Ordenação
• Uma das aplicações mais comuns na
Computação é a ordenação
• Processo através do qual dados são arranjados de
acordo com seus valores
• Quando usamos dados que não estão
ordenados, gastaremos horas tentando
encontrar um único item de informação
Bubble Sort
• Um dos mais simples algoritmos de ordenação
• A ideia é percorrer o vetor diversas vezes, a
cada passagem, fazendo flutuar para o final o
maior elemento da sequência
Bubble Sort
Bubble Sort
Bubble Sort
Bubble Sort
• Pseudo-código
BUBBLESORT(V[], n)
para i = 0 até n faça:
para j = 0 até n-1 faça:
se V[j] > V[j+1] então:
troque V[j] com V[j+1]
fim se
fim para
fim para
fim algoritmo
Selection Sort
• A ideia é passar sempre o menor valor do vetor
para a primeira posição
• Depois, o segundo menor para a segunda
posição
• E assim é feito sucessivamenta para os n-1
elementos restantes
Selection Sort
Selection Sort
SELECTIONSORT(V[], n)
para i = 0 até n-1 faça:
menor = i;
para j = i+1 até n faça:
se V[j] < V[menor] então:
menor = j
fim se
fim para
troque V[menor] com V[i]
fim para
fim algoritmo
Métodos de Ordenação
• Bubble Sort (ordernação por bolha)
• Selection Sort (ordenação por seleção)
• Insertion Sort (ordenação por inserção)
Exercícios
Teste de Ordenação
•Projete e escreva um programa que tome como
entrada um vetor e responda 1, caso o vetor
esteja ordenado e 0, caso contrário.
Download