SHARE
TWEET

Piramidal

allekco Oct 17th, 2019 89 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5. #include <stddef.h>
  6. #include <time.h>
  7.  
  8. int randomazer (int max, int min){
  9.     float random;
  10.     random = rand();
  11.     random = (random / RAND_MAX) * (max-min) + min;
  12.     return((int)random);
  13. }
  14.  
  15. void swap (int *a1, int *a2){
  16.   int tmp = *a1;
  17.   *a1 = *a2;
  18.   *a2 = tmp;
  19. }
  20.  
  21. void Max_Heapify (int *A, int i, int N){
  22.     int l, r, largest = i;
  23.     l = 2*i + 1;
  24.     r = 2*i + 2;
  25.    
  26.     if ((l < N) && (A[l] > A[largest])){
  27.         largest = l;
  28.     }
  29.     else{
  30.         largest = i;
  31.     }  
  32.     if ((r < N) && (A[r] > A[largest])){
  33.         largest = r;
  34.     }
  35.    
  36.     if(largest != i){
  37.         swap (&A[i], &A[largest]);
  38.         Max_Heapify (A, largest, N);
  39.     }      
  40. }
  41.  
  42. void Build_Max_Heap (int *A, int N){
  43.     int i;
  44.     for (i = N/2-1; i >= 0; i--){
  45.         Max_Heapify (A, i, N);
  46.     }
  47. }
  48.  
  49. void Heapsort (int *A, int N){
  50.     int i;
  51.     Build_Max_Heap (A, N);
  52.     for (i = N-1; i >= 0; i--){
  53.         swap (&A[0], &A[i]);
  54.         Max_Heapify (A, 0, i);
  55.     }
  56. }
  57.  
  58.  
  59. int main (void){
  60.     srand(time(NULL));
  61.     int N, i;
  62.     scanf ("%d", &N);
  63.     int A[N+1];  
  64.     for (i=0 ; i<N ; i++){
  65.         A[i] = randomazer (0, 100);
  66.         //printf ("%d ", A[i]);  
  67.     }
  68.     printf ("\n");
  69.  
  70.     clock_t start = clock ( ) ;
  71.     Heapsort (A, N);
  72.     clock_t end= clock ( ) ;
  73.     float seconds = ( float ) ( end - start ) / CLOCKS_PER_SEC;
  74.    
  75.     //for (i=0 ; i<N ; i++){
  76.         //printf ("%d ", A[i]);  
  77.     //}
  78.     printf (" \n");
  79.     printf ("%f ", seconds); // 100000(200000) - 0,016,
  80.      
  81.      return 0;
  82. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top