Advertisement
lodha1503

Untitled

Feb 26th, 2022
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.62 KB | None | 0 0
  1. def check_for_min_heap(arr):
  2.     arr_cpy=arr[0:len_arr]
  3.    
  4.     for i in range(len_arr//2-1,-1,-1):
  5.         p=i
  6.         left_ind=p*2+1
  7.         right_ind=2*p+2
  8.         while(left_ind<=len_arr-1 or right_ind<=len_arr-1):
  9.             if (left_ind>len_arr-1):
  10.                 m=right_ind
  11.             elif (right_ind>len_arr-1) :
  12.                 m=left_ind
  13.             else :  
  14.                 m=arr_cpy.index(min(arr_cpy[left_ind],arr_cpy[right_ind]))
  15.    
  16.             if (arr_cpy[p]>arr_cpy[m]):
  17.                 temp=arr_cpy[p]
  18.                 arr_cpy[p]=arr_cpy[m]
  19.                 arr_cpy[m]=temp
  20.                 p=m
  21.                 left_ind=p*2+1
  22.                 right_ind=2*p+2
  23.             else:
  24.                 break
  25.     for i in range(0,len_arr):
  26.         if arr[i]!=arr_cpy[i]:
  27.             return False
  28.    
  29.     return True
  30.  
  31. def heapify(arr):
  32.     global len_arr
  33.     for i in range(len_arr//2-1,-1,-1):
  34.         p=i
  35.         left_ind=p*2+1
  36.         right_ind=2*p+2
  37.         while(left_ind<=len_arr-1 or right_ind<=len_arr-1):
  38.             if (left_ind>len_arr-1):
  39.                 m=right_ind
  40.             elif (right_ind>len_arr-1) :
  41.                 m=left_ind
  42.             else :  
  43.                 m=arr.index(min(arr[left_ind],arr[right_ind]))
  44.    
  45.             if (arr[p]>arr[m]):
  46.                 temp=arr[p]
  47.                 arr[p]=arr[m]
  48.                 arr[m]=temp
  49.                 p=m
  50.                 left_ind=p*2+1
  51.                 right_ind=2*p+2
  52.             else:
  53.                 break
  54.    
  55.     for i in range(0,len_arr):
  56.         print(arr[i],end=" ")
  57.     print()
  58.    
  59.    
  60.  
  61. def Insert_an_element(arr,element):
  62.     global len_arr
  63.     if (check_for_min_heap(arr)==False):
  64.         print("Heap does not exist")
  65.     else:
  66.         arr[len_arr]=element
  67.         len_arr=len_arr+1
  68.         heapify(arr)
  69.  
  70. def delete_min_element(arr):
  71.     global len_arr
  72.     if (check_for_min_heap(arr)==False):
  73.         print("Heap does not exist")
  74.     else:
  75.        
  76.         arr[0]=arr[len_arr-1]
  77.         arr[len_arr-1]=0
  78.         len_arr=len_arr-1
  79.         heapify(arr)
  80.        
  81.        
  82. def delete_particular_element(arr,m):
  83.     global len_arr
  84.     if (check_for_min_heap(arr)==False):
  85.         print("Heap does not exist")
  86.     elif (arr.index(m)==-1):
  87.         print("Integer not found")
  88.     else:
  89.         d=arr.index(m)
  90.         arr[d]=arr[len_arr-1]
  91.         len_arr=len_arr-1
  92.         heapify(arr)
  93.        
  94. def heap_sort(arr):
  95.     global len_arr
  96.     bound=len_arr-1
  97.    
  98.     while(bound!=0):
  99.        
  100.         temp=arr[bound]
  101.        
  102.         arr[bound]=arr[0]
  103.         arr[0]=temp
  104.        
  105.         len_temp=bound
  106.        
  107.         for i in range(len_temp//2-1,-1,-1):
  108.             p=i
  109.             left_ind=p*2+1
  110.             right_ind=2*p+2
  111.             while(left_ind<=len_temp-1 or right_ind<=len_temp-1):
  112.                 if (left_ind>len_temp-1):
  113.                     m=right_ind
  114.                 elif (right_ind>len_temp-1) :
  115.                     m=left_ind
  116.                 else :  
  117.                     m=arr.index(min(arr[left_ind],arr[right_ind]))
  118.  
  119.                 if (arr[p]>arr[m]):
  120.                     temp=arr[p]
  121.                     arr[p]=arr[m]
  122.                     arr[m]=temp
  123.                     p=m
  124.                     left_ind=p*2+1
  125.                     right_ind=2*p+2
  126.                 else:
  127.                     break
  128.         bound=bound-1  
  129.        
  130.     for i in range(0,len_arr):
  131.         print(arr[i],end=" ")
  132.     print()  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141. input_arr=list(map(int,input().split(" ")))
  142. menu=input_arr[0]
  143. len_arr=len(input_arr)-2
  144. while(menu!=-1):
  145.     if (menu==1):
  146.         arr=[0 for i in range(0,100)]
  147.         for i in range(2,len(input_arr)):
  148.             arr[i-2]=input_arr[i]
  149.         heapify(arr)
  150.      
  151.        
  152.         input_arr=list(map(int,input().split(" ")))
  153.         menu=input_arr[0]
  154.        
  155.     elif (menu==2):
  156.         element_to_be_inserted=input_arr[1]
  157.         Insert_an_element(arr,element_to_be_inserted)
  158.        
  159.         input_arr=list(map(int,input().split(" ")))
  160.         menu=input_arr[0]
  161.        
  162.        
  163.        
  164.     elif(menu==3):
  165.         delete_min_element(arr)
  166.        
  167.         input_arr=list(map(int,input().split(" ")))
  168.         menu=input_arr[0]
  169.        
  170.        
  171.        
  172.     elif(menu==4):
  173.         m=input_arr[1]
  174.         delete_particular_element(arr,m)
  175.         input_arr=list(map(int,input().split(" ")))
  176.         menu=input_arr[0]
  177.        
  178.  
  179.     elif(menu==5):
  180.        
  181.         heap_sort(arr)
  182.         input_arr=list(map(int,input().split(" ")))
  183.         menu=input_arr[0]
  184.        
  185.        
  186.        
  187.        
  188.        
  189.        
  190.        
  191.        
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement