• Nenhum resultado encontrado

ordenacao

N/A
N/A
Protected

Academic year: 2021

Share "ordenacao"

Copied!
25
0
0

Texto

(1)

Algoritmos de Ordenac¸ ˜ao

Talles Brito Viana

IFCE Campus Crato

7 de fevereiro de 2020.

Este slide ainda ´e uma vers˜ao de rascunho.Acesse https://sites.google.com/site/tallesbrito/

disciplinas/pesquisa-e-ordenacao-de-dados para obter atualizac¸˜oes.

(2)

Ordenac¸ ˜ao

O que ´e?

Ordenar: processo de rearranjar um conjunto de objetos em uma ordem ascendente ou descendente.

A ordenac¸˜ao visa facilitar a recuperac¸˜ao posterior de itens do conjunto ordenado.

Os algoritmos operam sob os registros de um conjunto de dados. Cada registro possui uma chave utilizada para controlar a ordenac¸˜ao.

(3)

Ordenac¸ ˜ao por Selec¸ ˜ao

Definic¸ ˜ao

Ordenac¸˜ao por Selec¸˜ao ´e um dos algoritmos mais simples de ordenac¸˜ao.

Algoritmo (abstrato):

Selecione o menor item do arranjo. Troque-o com o item da primeira posic¸˜ao.

Repita estas duas operac¸˜oes com os n − 1 itens restantes, depois com os n − 2 itens, at´e que reste apenas um elemento.

(4)

Ordenac¸ ˜ao por Selec¸ ˜ao

Definic¸ ˜ao

Ordenac¸˜ao por Selec¸˜ao ´e um dos algoritmos mais simples de ordenac¸˜ao.

Algoritmo (abstrato):

Selecione o menor item do arranjo. Troque-o com o item da primeira posic¸˜ao.

Repita estas duas operac¸˜oes com os n − 1 itens restantes, depois com os n − 2 itens, at´e que reste apenas um elemento.

(5)

Ordenac¸ ˜ao por Selec¸ ˜ao

(6)

Ordenac¸ ˜ao por Selec¸ ˜ao

Algoritmo

Algoritmo: SELECTION-SORT (A, n) Dados:

A: um arranjo.

n: quantidade de elementos em A a ordenar.

Resultado: Os elementos de A s˜ao ordenados. 1 para i ←− 1 at ´e n − 1 fac¸a

2 menor←− i;

3 para j ←− i + 1 at ´e n fac¸a 4 se A[j] < A[menor] ent ˜ao

5 menor←− j;

(7)

Ordenac¸ ˜ao por Selec¸ ˜ao

An ´alise de Complexidade Para n = 6: O R D E N A → 5 A R D E N O → 4 A D R E N O → 3 A D E R N O → 2 A D E N R O → 1 A D E N O R Total de comparac¸˜oes T(n) = 1 + 2 + 3 · · · + (n − 1) =Pn−1 i=1 i. Primeiro termo =⇒ 1. ´ Ultimo termo =⇒ (n − 1). Quantidade de termos =⇒ (n − 1). T(n) = (1 + (n − 1))(n − 1) 2 = n2− n 2 = 1 2n 21 2n= θ(n 2).

(8)

Ordenac¸ ˜ao por Inserc¸ ˜ao

Definic¸ ˜ao

Ordenac¸˜ao por Inserc¸˜ao ´e o m´etodo preferido dos jogadores de cartas.

Algoritmo → Em cada passo a partir de i = 2 fac¸a:

Selecione o i-´esimo item da sequˆencia fonte.

Coloque-o no lugar apropriado na sequˆencia destino de acordo com o crit´erio de ordenac¸˜ao.

(9)

Ordenac¸ ˜ao por Inserc¸ ˜ao

(10)

Ordenac¸ ˜ao por Inserc¸ ˜ao

Algoritmo

Algoritmo: INSERTION-SORT (A, n) Dados:

A: um arranjo.

n: quantidade de elementos em A a ordenar.

Resultado: Os elementos de A s˜ao ordenados. 1 para i ←− 2 at ´e n fac¸a

2 chave←− A[i];

3 j←− i − 1;

4 enquanto j > 0 E A[j] > chave fac¸a

5 A[j + 1] ←− A[j];

6 j←− j − 1;

(11)

Ordenac¸ ˜ao por Inserc¸ ˜ao

An ´alise de Complexidade

Para n = 6: A D E N O R → 5

No melhor caso, tem-se que: Total de comparac¸˜oes T(n) = (n − 1) = Ω(n).

(12)

Ordenac¸ ˜ao por Inserc¸ ˜ao

An ´alise de Complexidade Para n = 6: 2 = 1 + 1 ← R O N E D A 3 = 1 + 2 ← O R N E D A 4 = 1 + 3 ← N O R E D A 5 = 1 + 4 ← E N O R D A 6 = 1 + 5 ← D E N O R A A D E N O R

No pior caso para n ≥ 2, tem-se que: Total de comparac¸˜oes T(n) = 2 + 3 · · · + n =Pn i=2i. Primeiro termo =⇒ 2. ´ Ultimo termo =⇒ n. Quantidade de termos =⇒ (n − 1). T(n) = (2 + n)(n − 1) 2 = 2(n − 1) + n(n − 1) 2 = (2n − 2 + n2− n) 2 = n2+ n − 2 2 = 1 n2+ 1n− 1 = O(n2).

(13)

Ordenac¸ ˜ao R ´apida (Quicksort)

Hist ´orico e Definic¸ ˜ao

Publicado em 1961: https://dl.acm.org/citation. cfm?doid=366622.366644.

´

E o algoritmo de ordenac¸˜ao interna mais r´apido que se conhece para uma ampla variedade de situac¸˜oes.

Provavelmente ´e o mais utilizado.

A ideia b´asica ´e dividir o problema de ordenar um conjunto com

nitens em dois problemas menores.

Os problemas menores s˜ao ordenados independentemente. Os resultados s˜ao combinados para produzir a soluc¸˜ao final.

(14)

Ordenac¸ ˜ao R ´apida (Quicksort)

Hist ´orico e Definic¸ ˜ao

A parte mais delicada do m´etodo ´e o processo de partic¸˜ao. O arranjo A[p..r] ´e rearranjado por meio da escolha arbitr´aria de um pivˆo A[r].

O arranjo A ´e particionado em duas partes:

As duas partes s˜ao divididas na posic¸˜ao q.

No final do processo o pivˆo A[r] ´e movido para a posic¸˜ao A[q]. A parte esquerda A[p..q − 1] tem chaves menores ou iguais a A[q]. A parte direita A[q + 1..r] tem chaves maiores a A[q].

(15)

Particionamento

Algoritmo

Algoritmo: PARTITION (A, p, r) Dados:

A: um arranjo.

p: ´ındice inicial de um subvetor de A. r: ´ındice final de um subvetor de A.

Resultado: Rearranja os elementos de A[p..r] de modo que

A[p..q − 1] ≤ A[q] e A[q + 1..r] > A[q] e retorna q.

1 q←− p;

2 para u ←− p at ´e r − 1 fac¸a 3 se A[u] ≤ A[r] ent ˜ao

4 A[q] ←→ A[u];

(16)

Particionamento

(17)

Ordenac¸ ˜ao R ´apida (Quicksort)

Algoritmo

Algoritmo: QUICKSORT (A, p, r) Dados:

A: um arranjo.

p: ´ındice inicial de um subvetor de A. r: ´ındice final de um subvetor de A.

Resultado: Os elementos do subvetor A[p..r] s˜ao ordenados. 1 se p ≥ r ent ˜ao

2 Retorne sem fazer nada;

3 sen ˜ao

4 q←−PARTITION(A, p, r);

(18)

Ordenac¸ ˜ao R ´apida (Quicksort)

(19)

An ´alise do Quicksort

An ´alise

Tempo de execuc¸ ˜ao T(n) para QUICKSORT no pior caso:

T(n) = (

θ(1), se n = 1 ou 0

T(n − 1) + T(0) + θ(n), se n > 1

(20)

An ´alise do Quicksort

An ´alise

Tempo de execuc¸ ˜ao T(n) para QUICKSORT no melhor caso:

T(n) = (

θ(1), se n = 1

2T(n/2) + θ(n), se n > 1

Toleramos o desleixo de subtrair 1 do tamanho de um dos subproblemas gerados.

(21)

Ordenac¸ ˜ao por Contagem

Definic¸ ˜ao

A Ordenac¸˜ao por Contagem assume que cada item do arranjo

Ade entrada ´e um n´umero inteiro entre 0 e k.

O algoritmo conta a ocorrˆencia de cada item 0 ≤ x ≤ k na entrada A.

Neste algoritmo n˜ao existem comparac¸˜oes entre as chaves, no que isto implica?

O algoritmo tem complexidade de tempo linear.

Apesar disso, necessita manter uma c´opia tempor´aria dos itens a serem ordenados.

(22)

Ordenac¸ ˜ao por Contagem

Definic¸ ˜ao

A Ordenac¸˜ao por Contagem assume que cada item do arranjo

Ade entrada ´e um n´umero inteiro entre 0 e k.

O algoritmo conta a ocorrˆencia de cada item 0 ≤ x ≤ k na entrada A.

Neste algoritmo n˜ao existem comparac¸˜oes entre as chaves, no que isto implica?

O algoritmo tem complexidade de tempo linear.

Apesar disso, necessita manter uma c´opia tempor´aria dos itens a serem ordenados.

(23)

Ordenac¸ ˜ao por Contagem

Algoritmo

Algoritmo: COUNTING-SORT (A, n, k) Dados:

A: um arranjo de tamanho n.

k: valor m´aximo ≥ 0 que pode ocorrer em A.

Resultado: Os elementos de A s˜ao ordenados.

1 Declare C[0..k] como novo arranjo;

2 Declare B[1..n] como novo arranjo;

3 para i ←− 0 at ´e k fac¸a

4 C[i] ←− 0;

5 para j ←− 1 at ´e n fac¸a

6 C[A[j]] ←− C[A[j]] + 1;

(24)

Ordenac¸ ˜ao por Contagem

Algoritmo

Algoritmo: COUNTING-SORT (A, n, k) Dados:

A: um arranjo.

n: quantidade de elementos em A a ordenar. k: valor m´aximo ≥ 0 que pode ocorrer em A.

Resultado: Os elementos de A s˜ao ordenados. 9 para j ←− n to 1 fac¸a //decremento

10 B[C[A[j]]] ←− A[j];

11 C[A[j]] ←− C[A[j]] − 1;

12 para j ←− 1 at ´e n fac¸a

(25)

Ordenac¸ ˜ao por Contagem

Referências

Documentos relacionados

• A indústria nacional de genéricos, apesar de suas dificuldades e limitações, possibilitava até 2005 o poder governamental de negociação (redução da ordem de 80% nos preços

A pesquisa de campo foi dividida em duas etapas: (1) caracterização da universidade em geral, direcionando a pesquisa para o Campus Ondina-Federação, por ser o maior em

Desta forma foi verificado que também no Brasil vive-se um processo de mudanças importantes nos padrões de organização familiar e na forma como as relações de gênero se

v Os mesmos requisitos do ServidorIBM ® SPSS Modeler 15.Consulte o documento de instalação de servidor apropriado em http://www-01.ibm.com/support/docview.wss?uid=swg27023172

As evidências indicam que as firmas classificadas como não suavizadoras de resultados são as que possuem maior grau de conservadorismo condicional, ou seja, maior oportunidade

De acordo com o último estudo da Coface sobre o risco de gestão de crédito na região da Ásia Pacífico, a experiência de pagamentos das empresas na região estabilizou em 2013,

1 — Todas as aberturas de acesso praticadas nas ante- paras das superstruturas fechadas e de outras estruturas exteriores, através das quais a água possa entrar e pôr em perigo o