-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathheap.cpp
More file actions
71 lines (66 loc) · 1.11 KB
/
heap.cpp
File metadata and controls
71 lines (66 loc) · 1.11 KB
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
#include<iostream>
using namespace std;
void print_array(int *array,int size);
void swap(int *array,int i,int max);
void heapify(int *array,int size,int i);
void heap_sort(int *array,int size);
int main()
{
int size;
cout<<"Enter size of array : ";
cin>>size;
cout<<"Now enter element of array : ";
int *array=new int[size];
for(int i=0;i<size;i++)
{
cin>>array[i];
}
heap_sort(array,size);
print_array(array,size);
}
void heapify(int *array,int size,int i)
{
int left=2*i+1;
int right=2*i+2;
int max=i;
if(left < size && array[max]<array[left])
{
max=left;
}
if(right < size && array[max]<array[right])
{
max=right;
}
if(max!=i)
{
swap(array,i,max);
heapify(array,size,max);
}
}
void print_array(int *array,int size)
{
cout<<"Now element of array is : ";
for(int i=0;i<size;i++)
{
cout<<array[i]<<" ";
}
cout<<"\n";
}
void swap(int *array,int i,int max)
{
int temp=array[i];
array[i]=array[max];
array[max]=temp;
}
void heap_sort(int *array,int size)
{
for(int i=size/2-1;i>=0;i--)
{
heapify(array,size,i);
}
for(int i=size-1;i>=0;i--)
{
swap(array,0,i);
heapify(array,i,0);
}
}