Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2014
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. with Ada.Text_IO;
  2. use Ada.Text_IO;
  3. with Ada.Integer_Text_IO;
  4. procedure prob1 is
  5. n : integer;
  6. type arr1 is array (1..n) of integer ;
  7. type Int_Acc is access all arr1 ; -- declaration of a pointer
  8. procedure max_heapify (Int_Acc : access arr1 ; n : integer; i : integer) is
  9. j : integer;
  10. temp : integer;
  11. begin
  12. temp := Int_Acc(i);
  13. j := 2*i;
  14.  
  15. while j <= n loop
  16. if j < n and Int_Acc(j+1) > Int_Acc(j) then
  17. j := j+1;
  18. elsif temp > Int_Acc(j) then
  19. exit when temp > Int_Acc(j);
  20. elsif temp <= Int_Acc(j) then
  21. Int_Acc(j/2) := Int_Acc(j);
  22. j := 2*j;
  23. end if;
  24. Int_Acc(j/2) := temp;
  25. end loop;
  26. end max_heapify;
  27. procedure heapsort (Int_Acc : access arr1 ; n : integer) is
  28. i : integer;
  29. temp : integer;
  30. begin
  31. while i>=2 loop
  32. temp := Int_Acc (i);
  33. Int_Acc(i) := Int_Acc (1);
  34. Int_Acc (1) := temp;
  35. i := i -1;
  36. max_heapify (arr1,1,i);
  37. end loop;
  38. end heapsort;
  39. procedure build_maxheap (Int_Acc : access arr1 ; n : integer) is
  40. begin
  41. while i >= 1 loop
  42. i := i -1;
  43. max_heapify (Int_Acc,n,i);
  44. end loop;
  45. end build_maxheap;
  46. m:integer ;
  47. i: integer;
  48. x:integer;
  49. begin
  50. put_line ("enetr the number of elemets of the array : ");
  51. Ada.Integer_Text_IO.Get(n);
  52. for k in arr1'Range loop
  53. put_line ("enter element" & integer'Image(k));
  54. Ada.Integer_Text_IO.Get(arr1(i));
  55. end loop;
  56. build_maxheap (arr1,m);
  57. heapsort(arr1 , m);
  58. put_line("sorted output is : ");
  59. for j in arr1'Range loop
  60. put_line(Integer'Image (arr1(i)));
  61. end loop;
  62. end prob1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement