Escolar Documentos
Profissional Documentos
Cultura Documentos
Disciplina: AEDS II
04 de setembro de 2023
Shell em 1959. Esse método é uma variação de um outro algoritmo chamado Insertion Sort, e
funciona basicamente realizando comparações entre um elemento de um vetor e outro que está
resultado da divisão do tamanho do vetor por 2, em seguida, após percorrer todo o vetor
realizando comparações, dividimos o intervalo H por 2 novamente, e assim fazemos até que H
seja igual a 1, nesse momento, o algoritmo se torna muito parecido com o Insertion Sort (daí
tiramos a comparação feita inicialmente com esse outro algoritmo), e então o vetor é
completamente organizado.
EXPLICAÇÃO DO CÓDIGO
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void number(long int vetor[], int tamanho)
{
2
int i;
int global;
A função `number` gera números aleatórios e os coloca em um vetor. O usuário define o limite
superior para a geração aleatória.
A função `crescente` implementa o algoritmo de ordenação Shell Sort para organizar os números
no vetor em ordem crescente.
int main()
{
clock_t inicio, fim;
inicio = clock();
case 2:
crescente(vetor, global); // Chama a função para ordenar o vetor em ordem crescente
printf("\n\nVETOR ORDENADO EM CRESCENTE\n\n");
for (i = 0; i < global; i++)
{
printf(" [%ld]\t", vetor[i]);
}
break;
case 3:
decrescente(vetor, global); // Chama a função para ordenar o vetor em ordem decrescente
printf("\n\nVETOR ORDENADO EM DECRESCENTE\n\n");
for (i = 0; i < global; i++)
{
printf(" [%ld]\t", vetor[i]);
}
break;
default:
printf("\n\n!!!OPCAO INVALIDA!!!\n\n");
}
fim = clock();
double tempo_execucao = (double)(fim - inicio) / CLOCKS_PER_SEC;
printf("\n\nO PROGRAMA LEVOU %.2f SEGUNDOS PARA SER EXECUTADO.\n",
tempo_execucao);
return 0;
5
}
O `main` é a função principal do programa. Aqui, o usuário escolhe entre embaralhar o vetor,
ordená-lo em ordem crescente ou ordená-lo em ordem decrescente. Dependendo da escolha do
usuário, a função apropriada é chamada (crescente ou decrescente). Em seguida, o programa
exibe o vetor resultante e mede o tempo de execução do processo.
Além disso, o programa usa a função `clock` para medir o tempo de execução e exibe esse tempo
no final.
É importante observar que o código tem um limite superior fixo para o tamanho do vetor
(100001), então o usuário pode escolher o tamanho do vetor apenas entre as opções predefinidas
(100, 1000, 10000 ou 100000).
COMPARAÇÃO DE RESULTADOS
Número limite Quantidade de Tempo de
números resposta (média)
100.000 100.000
100 100
100.000 100.000
100 100
100.000 100.000