Skip to content

Commit 67459d7

Browse files
update class
1 parent dc280f8 commit 67459d7

File tree

1 file changed

+79
-88
lines changed

1 file changed

+79
-88
lines changed

Sorting/HeapSort.cpp

Lines changed: 79 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -1,97 +1,88 @@
1-
#include<iostream>
1+
#
2+
include < iostream >
23

4+
using namespace std;
35

4-
using namespace std;
5-
6-
void swap(int *x,int *y)
7-
{
8-
int temp = *x;
9-
*x = *y;
10-
*y = temp;
6+
void swap(int * x, int * y) {
7+
int temp = * x; * x = * y; * y = temp;
118
}
129

13-
class heap
14-
{
15-
int heap_size;
16-
int *harr;
17-
int capacity;
18-
public:
19-
heap(int cap)
20-
{
21-
capacity = cap;
22-
heap_size = 0;
23-
harr = new int[cap];
24-
}
25-
int parent(int i){return (i-1)/2;}
26-
int left(int i){ return (2*i)+1;}
27-
int right(int i){ return (2*i)+2;}
28-
void insert(int num)
29-
{
30-
if(heap_size == capacity)
31-
{
32-
cout<<"Overflow"<<endl;
33-
return;
34-
}
35-
heap_size++;
36-
harr[heap_size-1] = num;
37-
int i = heap_size - 1;
38-
while(i >=0 && harr[parent(i)] > harr[i])
39-
{
40-
swap(&harr[parent(i)],&harr[i]);
41-
i = parent(i);
42-
}
43-
}
44-
void display()
45-
{
46-
int i;
47-
for(i=0;i<heap_size;i++)
48-
cout<<harr[i]<<" ";
49-
}
10+
class heap {
11+
int heap_size;
12+
int * harr;
13+
int capacity;
14+
public:
15+
heap(int cap) {
16+
capacity = cap;
17+
heap_size = 0;
18+
harr = new int[cap];
19+
}
20+
int parent(int i) {
21+
return (i - 1) / 2;
22+
}
23+
int left(int i) {
24+
return (2 * i) + 1;
25+
}
26+
int right(int i) {
27+
return (2 * i) + 2;
28+
}
29+
void insert(int num) {
30+
if (heap_size == capacity) {
31+
cout << "Overflow" << endl;
32+
return;
33+
}
34+
heap_size++;
35+
harr[heap_size - 1] = num;
36+
int i = heap_size - 1;
37+
while (i >= 0 && harr[parent(i)] > harr[i]) {
38+
swap( & harr[parent(i)], & harr[i]);
39+
i = parent(i);
40+
}
41+
}
42+
void display() {
43+
int i;
44+
for (i = 0; i < heap_size; i++)
45+
cout << harr[i] << " ";
46+
}
5047

51-
void minheapify(int i,int limit)
52-
{
53-
int l = left(i);
54-
int r = right(i);
55-
if(l>=limit || r>=limit)
56-
return;
57-
int smallest =i;
58-
if(harr[l] < harr[i])
59-
smallest= l;
60-
if(harr[r] < harr[smallest])
61-
smallest = r;
62-
if(i != smallest)
63-
{
64-
swap(&harr[i],&harr[smallest]);
65-
minheapify(smallest,limit);
66-
}
67-
}
48+
void minheapify(int i, int limit) {
49+
int l = left(i);
50+
int r = right(i);
51+
if (l >= limit || r >= limit)
52+
return;
53+
int smallest = i;
54+
if (harr[l] < harr[i])
55+
smallest = l;
56+
if (harr[r] < harr[smallest])
57+
smallest = r;
58+
if (i != smallest) {
59+
swap( & harr[i], & harr[smallest]);
60+
minheapify(smallest, limit);
61+
}
62+
}
6863

69-
void sort()
70-
{
71-
int i;
72-
for(i=1;i<heap_size-1;i++)
73-
{
74-
swap(&harr[0],&harr[heap_size-i]);
75-
minheapify(0,heap_size -i);
76-
}
77-
}
64+
void sort() {
65+
int i;
66+
for (i = 1; i < heap_size - 1; i++) {
67+
swap( & harr[0], & harr[heap_size - i]);
68+
minheapify(0, heap_size - i);
69+
}
70+
}
7871
};
7972

80-
81-
int main()
82-
{
83-
heap h(10);
84-
h.insert(10);
85-
h.insert(20);
86-
h.insert(30);
87-
h.insert(12);
88-
h.insert(8);
89-
h.insert(9);
90-
h.insert(11);
91-
h.insert(13);
92-
h.insert(14);
93-
h.sort();
94-
h.display();
95-
cout<<endl;
96-
return 0;
73+
int main() {
74+
heap h(10);
75+
h.insert(10);
76+
h.insert(20);
77+
h.insert(30);
78+
h.insert(12);
79+
h.insert(8);
80+
h.insert(9);
81+
h.insert(11);
82+
h.insert(13);
83+
h.insert(14);
84+
h.sort();
85+
h.display();
86+
cout << endl;
87+
return 0;
9788
}

0 commit comments

Comments
 (0)