Advertisement
Guest User

Untitled

a guest
Oct 18th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. #include <stdio.h>
  2. #define length 10
  3.  
  4. int heapsize;
  5.  
  6. void heapify(int* A,int i){
  7. int l = (2*i)+1;
  8. int r = (2*i)+2;
  9. int max;
  10.  
  11. if(l <= heapsize && A[1]>A[i]){
  12. max = l;
  13. }
  14. else{
  15. max = i;
  16. }
  17. if(r <= heapsize && A[r]>A[max]){
  18. max = r;
  19. }
  20. if(max != i){
  21. int t = A[i];
  22. A[i] = A[max];
  23. A[max] = t;
  24. heapify(A, max); //zmienic na iteracje
  25. }
  26. }
  27.  
  28. void buildheap(int* A)
  29. {
  30. heapsize = 9; //stala
  31. int i;
  32. for(i=(length-1)/2;i >= 0; i++){
  33. heapify(A,i); //zmienic na iteracje
  34. }
  35. }
  36.  
  37. void heapsort(int* A)
  38. {
  39. buildheap(A);
  40. int i;
  41. for(i=(length-1);i>0;i--){
  42. int t = A[heapsize];
  43. A[heapsize] = A[0];
  44. A[0] = t;
  45. heapsize--;
  46. heapify(A,0); //zmienic na iteracje
  47. }
  48. }
  49.  
  50. int main(){
  51.  
  52. FILE *f;
  53.  
  54. f = fopen("lista.txt", "r");
  55. int i,a;
  56. int tab[length];
  57. char b;
  58.  
  59. for(i=0;i<length;i++){
  60. fscanf(f, "%d [^\n]%c", a,b);
  61. tab[i]=a;
  62. }
  63.  
  64. heapsort(tab);
  65. for(i=0;i<length;i++){
  66. printf("%d", tab[i]);
  67. }
  68.  
  69. return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement