Heap Sort em C
Publicado por leone duarte de oliveira (última atualização em 04/05/2018)
[ Hits: 8.982 ]
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
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)