Aula 3 - Métodos_de_Ordenação
-
Upload
eurico-namaste -
Category
Documents
-
view
216 -
download
0
Transcript of Aula 3 - Métodos_de_Ordenação
8/19/2019 Aula 3 - Métodos_de_Ordenação
http://slidepdf.com/reader/full/aula-3-metodosdeordenacao 1/4
CLASSIFICAÇÃO E PESQUISA
Métodos de Ordenação
Ordenar corresponde ao processo de rearranjar um conjunto de objetos em umaordem ascendente ou descendente, com o objetivo de facilitar a recuperação posterior dealguma informação do conjunto ordenado. A ordenação é a base na qual muitos algoritmossão construídos. Entendendo-a, tem-se con ecimento para resolver outros problemas. Aordenação aparece em muitos problemas na pr!tica, e é o problema mais estudado em"i#ncia da "omputação. $rovavelmente devido aos computadores gastarem mais tempoordenando do que fa%endo qualquer outra coisa.
Os principais algoritmos de ordenação podem ser classificados em&− Ordenação por inserção
- 'nserção direta- 'ncremento decrescente () ell sort*
− Ordenação por troca - +étodo da bol a (bubble sort*- +étodo da troca e partição (quic sort*
− Ordenação por seleção - )eleção direta- )eleção em !rvore ( eapsort*
− Ordenação por intercalação
- +erge)ort
Ordenação por Inserção
Esse algoritmo é bastante simples e eficiente para uma quantidade pequena deelementos. A idéia de funcionamento é semel ante ao ordenamento de cartas de baral o namão de um jogador. A mão esquerda começa va%ia e a mão direita insere uma carta decada ve% na posição correta. Ao final, quando todas as cartas foram inseridas, elas j! estãoordenadas. $ara encontrar, durante a inserção, a posição correta para um valor, compara-seeste valor um-a-um com as cartas j! na mão esquerda, até encontrarmos a posição correta.$ossui bai a efici#ncia.
/esse método o vetor a ser ordenado é dividido em dois segmentos& o primeiro comos elementos j! ordenado e o seguinte com o restante dos elementos ainda não ordenados.
Algorit o! - o primeiro elemento é considerado no primeiro segmento (o j! ordenado*0- retirar o primeiro elemento do segmento desordenado e inseri-lo no segmentoordenado, j! na sua devida posição0- repetir o processo para todos os elementos do vetor.
/este algoritmo não ! necessidade de utili%ação de nen uma estrutura de dados e tra,além do pr1prio vetor inicial com os valores. "onsidere que os n2meros a serem ordenadosestão arma%enados num vetor. O algoritmo de ordenação por inserção tem comple idade
proporcional a n 3 no pior caso, onde n é o n2mero de elementos a serem ordenados.O algoritmo de ordenação por seleção (negrito* é apresentado no c1digo em "
abai o.
8/19/2019 Aula 3 - Métodos_de_Ordenação
http://slidepdf.com/reader/full/aula-3-metodosdeordenacao 2/4
4include <stdio.h>#include <stdlib.h>#define TAM 6
int ord_insercao ( int v[TAM]){ int i, j, x; for (j = 1; j < TAM; j++) { x = v[j]; for (i = j-1; i = ! "" v[i] x; --i) v[i+1] = v[i]; v[i+1] = x; ##
void main(){int vetor[TAM] i ! au" os$for(i%&$i<TAM$i'')
au"%rand()$os%ord insercao (vetor)$
E"e plo! Ordenar o vetor A 5 67,3,8,9,:,;<. ("ormen, 3==:*
0 1 2 3 4 57 3 8 9 : ;
0 1 2 3 4 53 7 8 9 : ;
0 1 2 3 4 53 8 7 9 : ;
0 1 2 3 4 53 8 7 9 : ;
0 1 2 3 4 5: 3 8 7 9 ;
0 1 2 3 4 5
: 3 ; 8 7 9
8/19/2019 Aula 3 - Métodos_de_Ordenação
http://slidepdf.com/reader/full/aula-3-metodosdeordenacao 3/4
E"erc#cios!
:. >sando a algoritmo de ordenação por inserção, ilustre a ordenação no vetor 5 6;:, 8:,7?, 39, 8:, 7@<. ("ormen, 3==:* uantas trocas foram efetuadasB
3. Ceescreva o procedimento de ordenação por inserção para ordenar em ordemdecrescente, em ve% da ordem crescente. ("ormen, 3==:*
S$ellSort
O método de ordenação ShellSort , ou Ordenação por Diminuição de Elementos, foiinventando por Donald ) ell em :?7?. O algoritmo reali%a a ordenação passando v!riasve%es pelo vetor dividindo em vetores cada ve% menores, e ao fim nos menores vetores éaplicado o método de ordenação por inserção .
Este algoritmo é baseado em trocas. O algoritmo usa uma vari!vel au iliar denominada distância de comparação (h). O valor de h é iniciali%ado com um valor
pr1 imo de n 3. A troca é feita entre elementos que estão distanciados h posiçFes (eestiverem fora de ordem*. Ap1s de fa%er todas as trocas de elementos cuja distancia é h, ovalor h deve ser redu%ido&
5 3 ou 5 ;O algoritmo é repetido até que a distGncia de comparação h seja igual a um ( h 5 :*. $ara h 5: (ultima passada* é e ecutado o algoritmo de inserção .
#include <stdio.h>#include <stdlib.h>#define TAM 6
int $%e&&_$ort( int '[TAM]) {int j, i, %, x;for ( % = TAM ; % =1; % =% ) {
for ( i = %; i < TAM; i++) {x = '[i];for ( j = i; j = %; j =j-%) {
if ( '[j - %] x) '[j] = '[j-%];
e&se *rea ;#
'[j] = x;#
##
main(){int vetor[TAM] i ! au" os$for(i%&$i<TAM$i'')
au"%rand()$*hell *ort (vetor)$
8/19/2019 Aula 3 - Métodos_de_Ordenação
http://slidepdf.com/reader/full/aula-3-metodosdeordenacao 4/4