Advertisement
Guest User

Untitled

a guest
Jun 15th, 2016
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <time.h>
  4.  
  5. int parent(int i)
  6. {
  7. return i/2;
  8. }
  9.  
  10. int left(int i)
  11. {
  12. return 2*i;
  13. }
  14.  
  15. int right(int i)
  16. {
  17. return 2*i+1;
  18. }
  19.  
  20. void heapify(int t[], int i, int size)
  21. {
  22. int largest, l, r;
  23. int tmp;
  24. l=left(i);
  25. r=right(i);
  26. largest=i;
  27. if(l<=size)
  28. if(t[l]>t[i])largest=l;
  29. if(r<=size)
  30. if(t[r]>t[largest])largest=r;
  31. if (largest!=i)
  32. {
  33. tmp=t[i];
  34. t[i]=t[largest];
  35. t[largest]=tmp;
  36. heapify(t, largest, size);
  37. }
  38. }
  39.  
  40. void build_heap(int t[], int size)
  41. {
  42. int i;
  43. for(i=size/2; i>0; i--)
  44. heapify(t, i, size);
  45. }
  46.  
  47. void heap_sort(int t[], int size)
  48. {
  49. //Podstawowa funkcja wywołana w MAIN
  50. int i, tmp;
  51. build_heap(t, size);
  52. for(i=size; i>1; i--)
  53. {
  54. tmp=t[1];
  55. t[1]=t[i];
  56. t[i]=tmp;
  57. --size;
  58. heapify(t, 1, size);
  59. }
  60. }
  61.  
  62. #define TAB_MAX 5
  63. #define RANDOM_MAX 10
  64.  
  65. void print(int T[])
  66. {
  67. int i;
  68. printf("\n[");
  69. for(i=0; i<TAB_MAX; i++)
  70. printf("%d ", T[i]);
  71. printf("]\n\n");
  72. }
  73.  
  74. void tab_random(int T[])
  75. {
  76. int i;
  77. for(i = 0; i<TAB_MAX; i++)
  78. T[i] = rand() % RANDOM_MAX;
  79. }
  80.  
  81. int main()
  82. {
  83. srand(time(NULL));
  84. int tab[TAB_MAX];
  85. tab_random(tab);
  86. print(tab);
  87. heap_sort(tab, TAB_MAX-1);
  88. print(tab);
  89.  
  90.  
  91. return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement