Linguagem de Programação- Fatec Zona Sul.
Ordenação de Vetores
Problema: Dado um vector (v) com N elementos, rearranjar esses elementos por ordem crescente (ou seja, por ordem não decrescente, porque podem existir valores repetidos).
Algoritmos:
– Ordenação por Inserção
– Ordenação por Selecção
– BubbleSort
– ShellSort
– MergeSort
– Ordenação por Partição (QuickSort)
– BucketSort
Considerações:
O espaço utilizado para a ordenação será o próprio vetor.Vamos estudar algoritmos de ordenação considerando como entrada um vetor de inteiros.
1. Ordenação por Seleção(SelectionSort)
Idéia básica do algoritmo:
Selecione o menor elemento do vetor.Troque esse elemento com o elemento da primeira posição do vetor.Repita as duas operações anteriores considerando apenas os n-1 elementos restantes, em seguida repita com os n-2 elementos restantes; e assim sucessivamente até que reste apenas um elemento no vetor a ser considerado.
Algoritmo:
Profa Mestre Sirley Ambrosia Vitorio Oliveira. Página 1
Linguagem de Programação- Fatec Zona Sul.
Algoritmo SelectionSort
Var i, j, aux, menor, A[n] Inteiro
1 PARA i ← 0 ATÉ n -1 FAÇA INICIO2 menor ← i3 PARA j ← i+1 ATÉ n FAÇA INÍCIO4 SE A[j]< A[menor]5 ENTÃO menor ← j FIM6 aux ← A[menor]7 A[menor] ← A[i]8 A[i] ← aux FIM
Exercícios.
1. Escreva uma função troca e reescreva o algoritmo SelectionSort utilizando essa função.
2. Implemente o algoritmo SelectionSort em C++ e teste utilizando um vetor de 10 posições. Utilize a função random para preencher o vetor, imprima o vetor original na tela e depois o vetor ordenado.
2. Ordenação por Inserção
(InsertionSort)
Idéia básica do algoritmo: Considera-se o vetor dividido em dois sub-vetores (esquerdo e direito), com o da esquerda
ordenado e o da direita desordenado. Inicia-se com apenas um elemento no sub-vetor da esquerda Move-se um elemento de cada vez do sub-vetor da direita para o sub-vetor da esquerda,
inserindo-o na posição correta de forma a manter o sub-vetor da esquerda ordenado Termina-se quando o sub-vetor da direita fica vazio
Algoritmo:
Profa Mestre Sirley Ambrosia Vitorio Oliveira. Página 2
Linguagem de Programação- Fatec Zona Sul.
ALGORITMO InsertionSortVar i, j, chave, A[n] Inteiro1 PARA i ←2 até n FAÇA INÍCIO2 chave ←A[ i]3 j←i-14 ENQUANTO j > 0 e A[j] > chave FAÇA INÍCIO5 A[j+1] ← A[j]6 j←j-1 FIM7 A[j+1] ← chave FIM
Exercícios.
3. Simule a ordenação um vetor de 5 posições utilizando o algoritmo InsertionSort, mostrar todas as interações.
4. Implemente o algoritmo InsertionSort em C++ e teste utilizando um vetor de 10 posições. Utilize a função random para preencher o vetor, imprima o vetor original na tela e depois o vetor ordenado.
3. Ordenação por Troca
(BubbleSort)
Idéia básica do algoritmo:
Compara elementos adjacentes. Se o segundo for menor do que o primeiro, troca-os
Repita a operação anterior até que o penúltimo elemento seja comparado com o último. Ao final desta repetição o elemento de maior valor estará em sua posição correta, a n-ésima posição do vetor.
Continue a ordenação posicionando o segundo maior elemento, o terceiro,..., até que todo o vetor esteja ordenado.
Algoritmo BubbleSortVar i, j, A[n] Inteiro1 PARA i ← n ATÉ 2 FAÇA - (Passo -1) INÍCIO
Profa Mestre Sirley Ambrosia Vitorio Oliveira. Página 3
Linguagem de Programação- Fatec Zona Sul.
2 PARA j ← 1 ATÉ i-1 FAÇA INÍCIO3 SE A[j]> A[j+1]4 ENTÃO Troca (A[j], A[j+1]) FIM FIM
Exercícios.
5. Simule a ordenação um vetor de 5 posições utilizando o algoritmo BubbleSort, mostrar todas as interações.
6. Implemente o algoritmo BubbleSort em C++ e teste utilizando um vetor de 10 posições. Utilize a função random para preencher o vetor,e implemente a função troca. Imprima o vetor original na tela e depois o vetor ordenado.
7. Pesquise a ideia básica do algoritmo ShellSort, escreva o algoritmo e implemente em C++
8. Pesquise a ideia básica do algoritmo MergeSort, escreva o algoritmo e implemente em C++
9. Pesquise a ideia básica do algoritmo QuickSort, escreva o algoritmo e implemente em C++
Profa Mestre Sirley Ambrosia Vitorio Oliveira. Página 4
Top Related