lista ordenacao vetores

5
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. Prof a Mestre Sirley Ambrosia Vitorio Oliveira. Página 1

Upload: giovanna-assis

Post on 02-May-2017

214 views

Category:

Documents


1 download

TRANSCRIPT

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