# data[].attributes.body
- Criado por Donald Shell;
- Surgiu no mês de julho de 1959;
- Publicado pela Universidade de Cincinnati (EUA - Ohio);
- Donald Shell também foi responsável por estudar sobre a convergência de exponenciais infinitos.

Fonte: https://en.wikipedia.org/wiki/Donald_Shell

# data[].attributes.body
- Comparamos elementos que estão a uma distância em vez de adjacentes;

- Para isso calculamos uma "abertura" para cada passagem e, em seguida, selecionamos os elementos à direita dessa abertura;

- Neste caso, reduzimos a abertura dividindo-o por 2;

- Realizamos essas ações de comparar e depois dividir até que o array esteja ordenado.

# data[].attributes.body
Fonte: https://pt.wikipedia.org/wiki/Shell_sort

# data[].attributes.headline
Análise da complexidade do algoritmo ShellSort

# data[].attributes.subject
Análise da complexidade do algoritmo ShellSort

# data[].attributes.body
Este vídeo é para ajudar na compreensão do algoritmo de ordenação Shell Sort.

# data[].attributes.headline
Exemplo de quando o tamanho do array é ímpar

# data[].attributes.subject
Exemplo de quando o tamanho do array é ímpar

# data[].attributes.headline
Funcionamento do algoritmo explicado com dança 

# data[].attributes.subject
Funcionamento do algoritmo explicado com dança 

# data[].attributes.attachment_link.title
Shell-sort with Hungarian (Székely) folk dance

# data[].attributes.headline
Funcionamento do Shell Sort usando copos

# data[].attributes.subject
Funcionamento do Shell Sort usando copos

# data[].attributes.headline
Análise de uma versão modificada do Shell Sort para Encriptação homomórfica - Artigo IEEE

# data[].attributes.subject
Análise de uma versão modificada do Shell Sort para Encriptação homomórfica - Artigo IEEE

# data[].attributes.attachment_link.title
Analysis of Modified Shell Sort for Fully Homomorphic Encryption

# data[].attributes.attachment_link.description
The Shell sort algorithm is one of the most practically effective in-place sorting algorithms. However, it is difficult to execute this algorithm with its intended running time complexity on data encrypted using fully homomorphic encryption (FHE), because the insertion sort in Shell sort has to be p…

# data[].attributes.body
Uma explicação sobre o funcionamento do algoritmo feita pelo site GeeksForGeeks.

# data[].attributes.attachment_link.readable_text
ShellSort is mainly a variation of Insertion Sort. In insertion sort, we move elements only one position ahead. When an element has to be moved far ahead, many movements are involved. The idea of shellSort is to allow exchange of far items. In shellSort, we make the array h-sorted for a large value of h. We keep reducing the value of h until it becomes 1. An array is said to be h-sorted if all sublists of every h'th element is sorted.

Following is the implementation of ShellSort.
Output:
Array before sorting:
12 34 54 2 3
Array after sorting:
2 3 12 34 54

Time Complexity: Time complexity of above implementation of shellsort is O(n ²). In the above implementation gap is reduce by half in every iteration. There are many other ways to reduce gap which lead to better time complexity. See this for more details.

References:
https://www.youtube.com/watch?v=pGhazjsFW28
http://en.wikipedia.org/wiki/Shellsort

Other Sorting Algorithms on GeeksforGeeks/GeeksQuiz:

# data[].attributes.attachment_link.description
ShellSort is mainly a variation of Insertion Sort. In insertion sort, we move elements only one position ahead. When an element has to be moved far ahead, many movements are involved. The idea of shellSort is to allow exchange of far items. In shellSort, we make the array h-sorted for a large value of h.

# data[].attributes.headline
Análise empírica do Shell Sort -  Artigo brasileiro publicado no I Encontro de Teoria da Computação 

# data[].attributes.subject
Análise empírica do Shell Sort -  Artigo brasileiro publicado no I Encontro de Teoria da Computação 

# data[].attributes.attachment_link.authors[].name
Raquel M. de Souza UERJ Fabiano de S. Oliveira UERJ Paulo Eustáquio D. Pinto UERJ

# data[].attributes.attachment_link.title
Análise Empírica do Algoritmo Shellsort | Anais do Encontro de Teoria da Computação (ETC)

# data[].attributes.attachment_link.description
This work aims at the study of the time complexity of the Shellsort algorithm from an empirical perspective. The theoretical performance of this algorithm depends on a sequence of integers used. Several classical sequences are studied in the literature, for most of which the time complexity is known…

# data[].attributes.headline
Veja mais artigos relacionados a ShellSort na plataforma da IEEE

# data[].attributes.subject
Veja mais artigos relacionados a ShellSort na plataforma da IEEE

# data[].attributes.attachment_link.description
IEEE Xplore, delivering full text access to the world's highest quality technical literature in engineering and technology. | IEEE Xplore

# data[].attributes.body
Foi utilizada a plataforma da Google para realizar os testes, ela possui as seguintes especificações:

- Intel(R) Xeon(R) CPU @ 2.20GHz
- 13GB RAM

- 33GB de espaço livre
- Interrupção ociosa 90 minutos
- Máximo de 12 horas

fonte: https://www.ti-enxame.com/pt/hardware/qual-e-especificacao-de-hardware-do-google-colaboratory/835071994/

fonte2: https://colab.research.google.com/drive/1dint4ly-7h8Trw0XRJ1uhC_VKe_wDJfY#scrollTo=0BEnwM-W23Y4

# data[].attributes.headline
Um pouco sobre o algoritmo e a sua implementação em diferentes linguagens

# data[].attributes.subject
Um pouco sobre o algoritmo e a sua implementação em diferentes linguagens

# data[].attributes.attachment_link.readable_text
Criado por Donald Shell em 1959, publicado pela Universidade de Cincinnati, Shell sort é o mais eficiente algoritmo de classificação dentre os de complexidade quadrática. É um refinamento do método de inserção direta. O algoritmo difere do método de inserção direta pelo fato de no lugar de considerar o array a ser ordenado como um único segmento, ele considera vários segmentos sendo aplicado o método de inserção direta em cada um deles. Basicamente o algoritmo passa várias vezes pela lista dividindo o grupo maior em menores. Nos grupos menores é aplicado o método da ordenação por inserção. Implementações do algoritmo. Veja a versão em inglês desse mesmo link.

Exemplo de execução

Execução:

Dado o vetor de entrada: 12, 43, 1, 6, 56, 23, 52, 9

12, 43, 1, 6, 56, 23, 52, 9

1, 6, 9, 12, 23, 43, 52, 56

Em negrito estão os números trocados na atual iteração.

Após as seguintes trocas acima, obtemos o vetor ordenado: 1, 6, 9, 12, 23, 43, 52, 56.

A ordenação Shell utiliza a quebra sucessiva da sequência a ser ordenada e implementa a ordenação por inserção na sequência obtida. Devido a sua complexidade possui excelentes desempenhos em N muito grandes, inclusive sendo melhor que o Merge Sort.

Referências

# data[].attributes.attachment_link.title
Shell sort - Wikipédia, a enciclopédia livre

# data[].attributes.attachment_link.description
Criado por Donald Shell em 1959, publicado pela Universidade de Cincinnati, Shell sort é o mais eficiente algoritmo de classificação dentre os de complexidade quadrática. É um refinamento do método de inserção direta.

# data[].attributes.headline
Veja a comparação do Shell Sort com alguns algoritmos de ordenação

# data[].attributes.subject
Veja a comparação do Shell Sort com alguns algoritmos de ordenação

# data[].attributes.attachment_link.readable_text
DISCUSSION
These pages show 8 different sorting algorithms on 4 different initial conditions. These visualizations are intended to:

Show how each algorithm operates.

Show that there is no best sorting algorithm.

Show the advantages and disadvantages of each algorithm.

Show that worse-case asymptotic behavior is not always the deciding factor in choosing an algorithm.

Show that the initial condition (input order and key distribution) affects performance as much as the algorithm choice.

The ideal sorting algorithm would have the following properties:

Stable: Equal keys aren't reordered.

Operates in place, requiring O(1) extra space.

Worst-case O(n·lg(n)) key comparisons.

Worst-case O(n) swaps.

Adaptive: Speeds up to O(n) when data is nearly sorted or when there are few unique keys.

There is no algorithm that has all of these properties, and so the choice of sorting algorithm depends on the application.

Sorting is a vast topic; this site explores the topic of in-memory generic algorithms for arrays. External sorting, radix sorting, string sorting, and linked list sorting-all wonderful and interesting topics-are deliberately omitted to limit the scope of discussion.

# data[].attributes.attachment_link.description
Animation, code, analysis, and discussion of 8 sorting algorithms on 4 initial conditions.

# data[].attributes.headline
Comparando algoritmos de ordenação - Feito pelo grupo

# data[].attributes.subject
Comparando algoritmos de ordenação - Feito pelo grupo