Anda di halaman 1dari 29

Descric

ao
Exemplo
An
alise
Refer
encias

Shell Sort
Johann Felipe Voigt
Universidade Federal de Alagoas

25 de Marco de 2015

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Topicos

Descricao
Hist
oria
Funcionamento
Caractersticas

Johann Felipe Voigt

Sequencias de distancias
Exemplo
C++
Analise
Sequencia classica

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Historia

Divulgado em 1959 por Donald Shell


Manter um desempenho de velocidade alto com melhor uso de memoria

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento

rapido ordenar listas com poucos elementos


E
rapido ordenar listas parcialmente ordenadas
E

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento

rapido ordenar listas com poucos elementos


E
rapido ordenar listas parcialmente ordenadas
E
Criar sublistas pequenas enquanto a lista estiver desordenada, e aos poucos ir aumentando
o tamanho das sublista conforme elas forem ficando ordenadas
Utiliza o Insertion Sort para ordenar cada sublista.

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento
5

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento
5

Distancia (gap): 4

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento
5
Distancia (gap): 4
Passo 1: 5 6 4 3

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento
5
Distancia (gap): 4
Passo 1: 5 6 4 3
Passo 2: 5 6 4 3

8
8

1
1

2
2

7
7

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento
5
Distancia (gap): 4
Passo 1: 5 6 4 3
Passo 2: 5 1 4 3

8
8

1
6

2
2

7
7

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento
5

Distancia (gap): 4
Passo 1: 5 6 4 3 8 1 2 7
Passo 2: 5 1 4 3 8 6 2 7
Passo 3: 5 1 4 3 8 6 2 7

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento
5
Distancia (gap): 4
Passo 1: 5 6 4 3
Passo 2: 5 1 4 3
Passo 3: 5 1 2 3

8
8
8

1
6
6

2
2
4

7
7
7

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento
5
Distancia (gap): 4
Passo 1: 5 6 4
Passo 2: 5 1 4
Passo 3: 5 1 2
Passo 4: 5 1 2

3 8 1 2 7
3 8 6 2 7
3 8 6 4 7
3 8 6 4 7

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento
5
Distancia (gap): 4 5
Distancia (gap): 2

6
8

4
6

3
4

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento
5
Distancia (gap): 4 5 1 2 3 8
Distancia (gap): 2
Passo 1: 5 1 2 3 8 6 4 7

4
6

3
4

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento
5
Distancia (gap): 4 5 1 2 3 8
Distancia (gap): 2
Passo 1: 2 1 4 3 5 6 8 7

4
6

3
4

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento
5
Distancia (gap): 4 5 1 2 3 8
Distancia (gap): 2
Passo 1: 2 1 4 3 5 6 8 7
Passo 2: 2 1 4 3 5 6 8 7

4
6

3
4

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento
5

Distancia (gap): 4 5 1 2 3 8 6 4 7
Distancia (gap): 2 2 1 4 3 5 6 8 7
Distancia (gap): 1

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento
5

Distancia (gap): 4 5 1 2 3 8 6 4 7
Distancia (gap): 2 2 1 4 3 5 6 8 7
Distancia (gap): 1
Passo 1: 2 1 4 3 5 6 8 7

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento
5

Distancia (gap): 4 5 1 2 3 8 6 4 7
Distancia (gap): 2 2 1 4 3 5 6 8 7
Distancia (gap): 1
Passo 1: 1 2 3 4 5 6 7 8

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento
5

Distancia (gap): 4 5 1 2 3 8 6 4 7
Distancia (gap): 2 2 1 4 3 5 6 8 7
Distancia (gap): 1 1 2 3 4 5 6 7 8

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Funcionamento

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Caractersticas

Nao estavel
adaptativo (heranca do Insertion Sort)
E
Complexidade de espaco: O(1)
Complexidade de tempo: Varia de acordo com a sequencia de distancias escolhida

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Hist
oria
Funcionamento
Caractersticas
Sequ
encias de dist
ancias

Descricao - Sequencias de distancias sugeridas

Termo
 n Geral

2k

2k + 1
(n
umeros na forma 2p 3q )
4k + 3 2k1 + 1
(desconhecida)

 n Termos
 
, n4 , ..., 1
2
1, 3, 5, 9, 17, ...
1, 2, 3, 4, 6, 8, ...
1, 3, 7, 21, 48, ...
1, 4, 10, 23, 57, 132, 301, 701

Johann Felipe Voigt

Shell Sort

Pior-caso
(n2 )
(n3/2 )
(n log2 n)
O(n4/3 )
?

Autor
Shell, 1959
Papernov & Stasevich, 1956
Pratt, 1971
Sedgewick, 1986
Ciura, 2001

Descric
ao
Exemplo
An
alise
Refer
encias

C++

Exemplo - C++
void shell_sort ( int ar [] , int size ){
int j ;
for ( int gap = size / 2; gap > 0; gap /= 2){
for ( int i = gap ; i < size ; ++ i ){
int temp = ar [ i ];
for ( j = i ; j >= gap && temp < ar [ j - gap ]; j -= gap ){
ar [ j ] = ar [ j - gap ];
}
ar [ j ] = temp ;
}
}
}
Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Sequ
encia cl
assica

Analise - Sequencia classica

O primeiro laco do algoritmo e repetido p vezes, onde p = max{p; 2p n} p = log2 n


Para cada uma das repetic
oes, um Insertion Sort e chamado algumas vezes
Na
Na
Na
Na

primeira vez, n2 Insertion Sort s


ao chamados para ordenar listas de 2 posico
es
segunda vez, n4 Insertion Sort s
ao chamados para ordenar listas de 4 posico
es
pen
ultima vez, 2 Insertion Sort s
ao chamados para ordenar listas de n2 posico
es
u
ltima vez, apenas 1 Insertion Sort e chamado para ordenar a lista de n posico
es

Cada Insertion Sort tem complexidade igual ao quadrado do tamanho da lista


( n2 22 ) + ( n4 42 ) + ... + (2 ( n2 )2 ) + (1 n2 )

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Sequ
encia cl
assica

Analise - Sequencia classica

( n2 22 ) + ( n4 42 ) + ... + (2 ( n2 )2 ) + (1 n2 )
(1 n2 ) + (2 ( n2 )2 ) + ... + ( n4 42 ) + ( n2 22 )
1 1
n2 (1 + + + ...)
| 2 {z 4
}
p vezes

n2 (1 +

p1
P
k=1

1
2k

Johann Felipe Voigt

Shell Sort

Descric
ao
Exemplo
An
alise
Refer
encias

Referencias

Lang, H. W. (2015), Shellsort. URL http:


//www.iti.fh-flensburg.de/lang/algorithmen/sortieren/shell/shellen.htm,
[Online: accessed 22-March-2015].
Martin, D. R. (2015), Shell sort - sorting algorithm animations. URL
http://www.sorting-algorithms.com/shell-sort, [Online: accessed 22-March-2015].
Shell, D. L. (1959), A high-speed sorting procedure.
Wikipedia (2015), Shellsort wikipedia, the free encyclopedia. URL
http://en.wikipedia.org/w/index.php?title=Shellsort&oldid=652021354,
[Online; accessed 22-March-2015].

Johann Felipe Voigt

Shell Sort

Anda mungkin juga menyukai