- Implementar um algoritmo que manipula um tipo estruturado Produtos e que possui a funcionalidade de ordenar 50 produtos em ordem crescente de preço utilizando o Algoritmo de Ordenação Shell Sort.
- Maria Aparecida da Silva.
- O Shell Sort compara elementos que estão a uma certa "distância" um do outro. Essa "distância" é determinada por uma sequência de incrementos ou intervalos, chamada de "gap", que diminui gradualmente até se tornar 1.
void ordenarProdutosPorPreco(Produto* produtos, int n) { //função responsável por ordenar os produtos através do Algoritmo de Ordenação Shell Sort
for (int gap = n / 2; gap > 0; gap /= 2) { //o laço define o gap, começando com metade do tamanho do array e reduzindo-o pela metade em cada finalização
for (int i = gap; i < n; i++) { //percorre o array a partir do índice gap até o final
Produto temp = produtos[i]; //armazena o produto atual em uma variável temporária
int j; //declara uma variável para o laço de inserção
for (j = i; j >= gap && produtos[j - gap].preco > temp.preco; j -= gap) { // Move os produtos maiores para a posição correta, comparando o preço do produto atual com os produtos que estão gap posições atrás
produtos[j] = produtos[j - gap]; // desloca o produto maior para a frente no array
}
produtos[j] = temp; //insere o produto temporário na posição correta após o loop interno.
}
}
Quando a coleção de entrada está parcialmente ordenada
O(nlogn)
Varia dependendo da sequência de intervalos utilizada, se precisar ordenar um array inverso
O(n^2)
Não requer espaço adicional além do necessário para armazenar os dados de entrada
O(1)
Clone o repositório
git clone https://github.com/M-Aparecida/ShellSort
Vá até o diretório onde o arquivo .c se encontra, e no terminal use o seguinte comando
gcc main.c produtos.c -o produtos_precos
./produtos_precos