Comparação entre os algoritmos de ordenação de dados: buble sort, quick sort, selection sort, inserction sort, shell sort e merge sort - em C
1955 palavras
8 páginas
/*Exemplo Ordenação de Dados - C
Trabalho de Estrutura de Dados I
Parte I - Comparação entre os algoritmos de ordenação de dados: buble sort, quick sort, selection sort, inserction sort, shell sort e merge sort.
by Anderson Luiz Fernandes Perez - @2012
Este programa deverá ser utilizado como exemplo para a implementação da primeira parte do trabalho.
MUDAR PRA NUMERO DE COMPARAÇÕES E NÃO DE TROCAS
CRIAR VARIAVEL GLOBAL PRA SOMAR OS NUMEROS DA RECURSIVIDADE
*/
#include
#include
#include
#define T_BASE_DADOS 1000
#define MAX_RAND 500
#define DEBUG 0
/* Estruturas */ typedef struct lista lista;
struct lista{ int n; int trocas; lista *ant, *prox;
};
/* Cabeçalho das rotinas auxiliares */ int troca(int *a, int *b); void exibeLista(lista *plst); //void mostraVetor(int *dados);
void mostraResultado(int buble1, int buble2, int buble3, int selection1, int selection2, int selection3, int insertion1, int insertion2, int insertion3, int merge, int quick); void geraArquivoConfGnuPlot(char *nomeArq); void geraArquivoSaida(char *nomeArq, int buble1, int buble2, int buble3, int selection1,int selection2, int selection3, int insertion1, int insertion2, int insertion3, int merge, int quick); void gerarGrafico(char *nomeArq);
lista *criaCelula(int num); void insereLista(lista **plst, lista *novo);
FILE *abreArquivoEntrada(lista *list, int opc); lista *acha_ultimo(lista *plst, lista *n); lista *achar_maior (lista *dados, lista *ultimo); //int achaMaior(int *dados, int qtd); lista *juntar(lista* a, lista* b, int cont); int dividir(lista *dados, lista **frente, lista **atras); int tamLista (lista *dados); lista *achaPivot(lista *dados); lista *copiar(lista *plst, lista *copia);
/* Algoritmos de ordenação de dados */ int bubleSort(int opc); int selectionSort(int opc); int insertionSort(int opc);
lista *mergeSort(lista *dados, int cont); int r_merge = 0;
lista