fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. class heap{
  4. public:
  5. int arr[100];
  6. int size=0;
  7. void insert(int value){
  8. size++;
  9. arr[size]=value;
  10. int i=size;
  11. while(i>1){
  12. int parent=i/2;
  13. if(arr[parent]<arr[i]){
  14. swap(arr[parent],arr[i]);
  15. i=parent;
  16. }
  17. else return ;
  18. }
  19. }
  20.  
  21. void print(){
  22. for(int i=0;i<=size;i++){
  23. cout<<arr[i]<<" ";
  24. }
  25. cout<<endl;
  26. }
  27.  
  28. void del(){
  29. if(size==0){
  30. cout<<"No elements to delete";
  31. return ;
  32. }
  33. arr[1]=arr[size];
  34. size--;
  35. int i=1;
  36. while(i<size){
  37. int leftnode=2*i;
  38. int rightnode=2*i+1;
  39. if(i<size&&arr[i]<arr[leftnode]){
  40. swap(arr[i],arr[leftnode]);
  41. i=leftnode;
  42.  
  43. }
  44. else if (i<size&&arr[i]<arr[rightnode]){
  45. swap(arr[i],arr[rightnode]);
  46. i=rightnode;
  47. }
  48. else
  49. {
  50. return;
  51. }
  52. }
  53. }
  54. void heapify(int arr[],int size,int index){
  55. int i=index;
  56. int leftnode=2*i;
  57. int rightnode=2*i+1;
  58. if(i<size&&arr[i]<arr[leftnode]){
  59. i=leftnode;
  60. }
  61. if (i<size&&arr[i]<arr[rightnode]){
  62. i=rightnode;
  63. }
  64.  
  65. if(index!=i){
  66. swap(arr[index],arr[i]);
  67. heapify(arr,size,i);
  68. }
  69. return;
  70. }
  71. };
  72. int main() {
  73. // your code goes here
  74. heap h;
  75. h.insert(10);
  76. h.insert(20);
  77. h.insert(30);
  78. h.insert(5);
  79. h.insert(29);
  80. h.print();
  81. h.del();
  82. h.print();
  83. int arr[6]={-1,32,45,67,87,98};
  84. for(int i=3;i>0;i--){
  85. h.heapify(arr,6,i);
  86. }
  87. for(auto itr:arr){
  88. cout<<itr<<" ";
  89. }
  90. return 0;
  91. }
Success #stdin #stdout 0s 5308KB
stdin
Standard input is empty
stdout
0 30 29 20 5 10 
0 29 10 20 5 
-1 98 87 67 32 45