-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPrac10-E22.cpp
126 lines (106 loc) · 2.13 KB
/
Prac10-E22.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <iostream>
using namespace std;
void MaxHeapify(int a[], int i, int n)
{
int j, temp;
temp = a[i];
j = 2 * i;
while (j <= n)
{
if (j < n && a[j + 1] > a[j])
j = j + 1;
if (temp > a[j])
break;
else if (temp <= a[j])
{
a[j / 2] = a[j];
j = 2 * j;
}
}
a[j / 2] = temp;
return;
}
void MinHeapify(int a[], int i, int n)
{
int j, temp;
temp = a[i];
j = 2 * i;
while (j <= n)
{
if (j < n && a[j + 1] < a[j])
j = j + 1;
if (temp < a[j])
break;
else if (temp >= a[j])
{
a[j / 2] = a[j];
j = 2 * j;
}
}
a[j / 2] = temp;
return;
}
void MaxHeapSort(int a[], int n)
{
int i, temp;
for (i = n; i >= 2; i--)
{
temp = a[i];
a[i] = a[1];
a[1] = temp;
MaxHeapify(a, 1, i - 1);
}
}
void MinHeapSort(int a[], int n)
{
int i, temp;
for (i = n; i >= 2; i--)
{
temp = a[i];
a[i] = a[1];
a[1] = temp;
MinHeapify(a, 1, i - 1);
}
}
void Build_MaxHeap(int a[], int n)
{
int i;
for (i = n / 2; i >= 1; i--)
MaxHeapify(a, i, n);
}
void Build_MinHeap(int a[], int n)
{
int i;
for (i = n / 2; i >= 1; i--)
MinHeapify(a, i, n);
}
int main()
{
cout<<"DSAL Practical No. 10 (E-22)"<<endl;
cout<<"Prepared By : Anshul Singh"<<endl;
int n, i;
cout << "\nEnter the number of Students : ";
cin >> n;
n++;
int arr[n];
for (i = 1; i < n; i++)
{
cout << "Enter the marks : " << i << ": ";
cin >> arr[i];
}
Build_MaxHeap(arr, n - 1);
MaxHeapSort(arr, n - 1);
int max, min;
cout << "\nSorted Data : ASCENDING : ";
for (i = 1; i < n; i++)
cout << "->" << arr[i];
min = arr[1];
Build_MinHeap(arr, n - 1);
MinHeapSort(arr, n - 1);
cout << "\nSorted Data : DESCENDING: ";
max = arr[1];
for (i = 1; i < n; i++)
cout << "->" << arr[i];
cout << "\nMaximum Marks : " << max << "\nMinimum marks : " << min;
return 0;
}