Heap Sort em C
Publicado por leone duarte de oliveira (última atualização em 04/05/2018)
[ Hits: 8.819 ]
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.
Atenção a quem posta conteúdo de dicas, scripts e tal (2)
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET
Ativando o Modo Noturno via Linha de Comando no GNOME/Wayland
Preparando pendrive com GNU/Linux [Corretamente!]
Instalando Google Chrome no Fedora 40
Habilitando a importação de senhas no Firefox
Como corrigir o erro do VirtualBox travar a máquina virtual em tela cheia
Problema ao configurar Zabbix no ubuntu (10)
NOTEBUXO POSITIVO VAIO VJFE43F11X Something has gone seriously wrong... (2)
Como faço pra um script ser executado apenas abrindo um terminal e dan... (8)
O Programa Configurações Sumiu no Ubuntu 22.04 [RESOLVIDO] (5)