Heap Sort em C
Publicado por leone duarte de oliveira (última atualização em 04/05/2018)
[ Hits: 8.964 ]
Homepage: leone duarte
Método de ordenação Heap Sorte, feito em projeto.
Necessário ter os 3 arquivos para funcionar. Copie cada um em seu respectivo arquivo. Verifique se os nomes dos arquivos e seus respectivos #include no código-fonte.
//////MAIN////// /* DESENVOLVIDO POR LEONE DUARTE DE OLIVEIRA MATERIA: ORDENAÇÃO E PESQUISA PROFESSOR:MAICON RIBEIRO DATA: 29/03/2018 */ #include"heap.h" main(){ int tamanho_vetor, *vetor,contador,contador2=0,maior,cont,sair=0,menu1; int aux; while(sair==0){ printf("\n\t\t--------------------------------------\n"); printf("\n\t\t\tORDENACAO USANDO HEAP SORT\n\n\t\t\t1-GERAR NOVO VETOR\n\t\t\t2-SAIR\n\t\t\t>>>>>"); printf("\n\t\t--------------------------------------\n"); scanf("%d",&menu1); system("cls"); switch(menu1){ case 1: printf("\nINSIRA O TAMANHO DO VETOR:\n"); scanf("%d",&tamanho_vetor); vetor = malloc(sizeof(int)* (tamanho_vetor)); srand(time(NULL)); //gerando vetores aleatorios for(contador = 0; contador < tamanho_vetor; contador++){ vetor[contador]= rand()%100; } //exibindo desordenado for(contador2=0; contador2 < tamanho_vetor; contador2++){ printf("numero %d: %d\n",contador2,vetor[contador2]); } printf("\n\n--------------------------------------\n\n"); clock_t hora_inicial = clock(); heap_sort(vetor, tamanho_vetor); cont = tamanho_vetor-1; while(cont >= 0 ){ //mandando o maior para o começo heap_sort(vetor, cont); //mandando maior para o final for(contador = 0; contador < cont; contador++){ aux = vetor[contador]; vetor[contador] = vetor[contador+1]; vetor[contador+1] = aux; } heap_sort(vetor, cont); cont--; } clock_t hora_final = clock(); //exibindo organizado for(contador2 = 0; contador2 < tamanho_vetor; contador2++){ printf("numero %d: %d\n",contador2, vetor[contador2]); } double tempo_gasto = ( (double) (hora_final - hora_inicial) ) / CLOCKS_PER_SEC; printf("TEMPO GASTO USANDO HEAP SORT: %lf s\n", tempo_gasto); system("pause"); system("cls"); break; case 2: printf("\nATE LOGO..."); sair=1; break; } } } //////////////////////////////////////////////////////////////////////////////////////////////////////HEAP.C///////////////////////////////////////////////////////////////////////////////////////////////// #include"heap.h" int heap_sort(int *vetor, int tamanho){ int pai_direita, pai_esquerda, aux, contador; for(contador = tamanho-1; contador >= 0; contador-- ){ //descobrindo o a raiz de cada galho pai_direita = (contador / 2) - 1; pai_esquerda = (contador - 2) / 2; //trocando caso a raiz seja manor que o galho da direita if(vetor[contador] > vetor[pai_direita]){ aux = vetor[contador]; vetor[contador] = vetor[pai_direita]; vetor[pai_direita] = aux; } //trocando caso a raiz seja menor que o galhp da esquerda else if (vetor[contador-1] > vetor[pai_esquerda] ){ aux = vetor[contador-1]; vetor[contador-1] = vetor[pai_esquerda]; vetor[pai_esquerda] = aux; } } } ///////HEAP.H///// #include<stdlib.h> #include<stdio.h> #include<time.h> int heap_sort(int *vetor, int tamanho);//recebe um vetor um tamanho com o objetivo de mover o maior valor sempre para primeira posição
Métodos de Ordenação - Quick Sort
Um parser para tratar opções passadas para um programa em C
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Erro no cups.file [RESOLVIDO] (10)
Pq me aparece isso quando fui atualizar o Ubuntu 24.10 no terminal? (3)
Pegar a ultima ocorrencia viva (2)
como coloco para instalar com esse erro. (13)
Alguém sabe de documentos de texto e /ou vídeo aulas de certificações ... (1)