Advertisement
lodha1503

Untitled

Mar 2nd, 2022
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.16 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. def Insert_an_element(arr,element):
  60.     global len_arr
  61.     if (check_for_min_heap(arr)==False or len_arr==0):
  62.         print("Heap does not exist")
  63.     else:
  64.         arr[len_arr]=element
  65.         len_arr=len_arr+1
  66.         heapify(arr)
  67.  
  68. def delete_min_element(arr):
  69.     global len_arr
  70.     if (check_for_min_heap(arr)==False or len_arr==0):
  71.         print("Heap does not exist")
  72.     else:
  73.        
  74.         arr[0]=arr[len_arr-1]
  75.         arr[len_arr-1]=0
  76.         len_arr=len_arr-1
  77.         heapify(arr)
  78.        
  79.        
  80. def delete_particular_element(arr,m):
  81.     global len_arr
  82.     if (check_for_min_heap(arr)==False):
  83.         print("Heap does not exist")
  84.     elif (m not in arr):
  85.         print("Integer not found")
  86.     else:
  87.         d=arr.index(m)
  88.         arr[d]=arr[len_arr-1]
  89.         len_arr=len_arr-1
  90.         heapify(arr)
  91.        
  92. def heap_sort(arr):
  93.     global len_arr
  94.     bound=len_arr-1
  95.    
  96.     while(bound!=0):
  97.        
  98.         temp=arr[bound]
  99.        
  100.         arr[bound]=arr[0]
  101.         arr[0]=temp
  102.        
  103.         len_temp=bound
  104.        
  105.         for i in range(len_temp//2-1,-1,-1):
  106.             p=i
  107.             left_ind=p*2+1
  108.             right_ind=2*p+2
  109.             while(left_ind<=len_temp-1 or right_ind<=len_temp-1):
  110.                 if (left_ind>len_temp-1):
  111.                     m=right_ind
  112.                 elif (right_ind>len_temp-1) :
  113.                     m=left_ind
  114.                 else :  
  115.                     m=arr.index(min(arr[left_ind],arr[right_ind]))
  116.  
  117.                 if (arr[p]>arr[m]):
  118.                     temp=arr[p]
  119.                     arr[p]=arr[m]
  120.                     arr[m]=temp
  121.                     p=m
  122.                     left_ind=p*2+1
  123.                     right_ind=2*p+2
  124.                 else:
  125.                     break
  126.         bound=bound-1  
  127.        
  128.     for i in range(0,len_arr):
  129.         print(arr[i],end=" ")
  130.     print()  
  131.  
  132.  
  133.  
  134. len_arr=0
  135. arr=[0 for i in range(0,100)]
  136. menu=0
  137. while(menu!=-1):
  138.     input_arr=list(map(int,input().split(" ")))
  139.     menu=input_arr[0]
  140.     if (menu==1):
  141.        
  142.         for i in range(2,len(input_arr)):
  143.             len_arr=len_arr+1
  144.             arr[i-2]=input_arr[i]
  145.         heapify(arr)
  146.    
  147.     elif (menu==2):
  148.         element_to_be_inserted=input_arr[1]
  149.         Insert_an_element(arr,element_to_be_inserted)
  150.      
  151.     elif(menu==3):
  152.         delete_min_element(arr)
  153.    
  154.     elif(menu==4):
  155.         m=input_arr[1]
  156.         delete_particular_element(arr,m)
  157.  
  158.     elif(menu==5):
  159.         heap_sort(arr)
  160.        
  161.        
  162.        
  163.        
  164.        
  165.        
  166.        
  167.        
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement