Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- with Ada.Text_IO;
- use Ada.Text_IO;
- with Ada.Integer_Text_IO;
- procedure prob1 is
- n : integer;
- type arr1 is array (1..n) of integer ;
- type Int_Acc is access all arr1 ; -- declaration of a pointer
- procedure max_heapify (Int_Acc : access arr1 ; n : integer; i : integer) is
- j : integer;
- temp : integer;
- begin
- temp := Int_Acc(i);
- j := 2*i;
- while j <= n loop
- if j < n and Int_Acc(j+1) > Int_Acc(j) then
- j := j+1;
- elsif temp > Int_Acc(j) then
- exit when temp > Int_Acc(j);
- elsif temp <= Int_Acc(j) then
- Int_Acc(j/2) := Int_Acc(j);
- j := 2*j;
- end if;
- Int_Acc(j/2) := temp;
- end loop;
- end max_heapify;
- procedure heapsort (Int_Acc : access arr1 ; n : integer) is
- i : integer;
- temp : integer;
- begin
- while i>=2 loop
- temp := Int_Acc (i);
- Int_Acc(i) := Int_Acc (1);
- Int_Acc (1) := temp;
- i := i -1;
- max_heapify (arr1,1,i);
- end loop;
- end heapsort;
- procedure build_maxheap (Int_Acc : access arr1 ; n : integer) is
- begin
- while i >= 1 loop
- i := i -1;
- max_heapify (Int_Acc,n,i);
- end loop;
- end build_maxheap;
- m:integer ;
- i: integer;
- x:integer;
- begin
- put_line ("enetr the number of elemets of the array : ");
- Ada.Integer_Text_IO.Get(n);
- for k in arr1'Range loop
- put_line ("enter element" & integer'Image(k));
- Ada.Integer_Text_IO.Get(arr1(i));
- end loop;
- build_maxheap (arr1,m);
- heapsort(arr1 , m);
- put_line("sorted output is : ");
- for j in arr1'Range loop
- put_line(Integer'Image (arr1(i)));
- end loop;
- end prob1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement