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.