Advertisement
PaweU

kopcowanie

Dec 3rd, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.91 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Mon Nov 19 10:36:25 2018
  4.  
  5. @author: pytlpawe
  6. """
  7.  
  8. import random
  9. random.seed()
  10.  
  11. lista = []
  12. dlugosc = 10
  13.  
  14. for x in range (dlugosc):
  15.     lista.append (random.randrange(10))
  16.     print (lista[x], end=" ")
  17.    
  18. print ("\n\n")
  19.    
  20. kopiec = []
  21. posortowane = []
  22.  
  23. #tworzenie kopca
  24.  
  25. for i in range (dlugosc):
  26.     kopiec.append (lista[i])
  27.     nr = i
  28.     while (nr>0):
  29.         if (nr % 2 == 0):
  30.             rodzic = int (nr/2) + 1
  31.         else:
  32.             rodzic = int (nr/2)
  33.            
  34.         if (kopiec[nr]>kopiec[rodzic]):
  35.             kopiec [nr], kopiec [rodzic] = kopiec [rodzic], kopiec [nr]
  36.             nr = rodzic
  37.         else:
  38.             break
  39.  
  40. for x in range (dlugosc):
  41.     print (kopiec [x], end=" ")
  42. print ("\n\n")
  43.  
  44. #rozbior kopca
  45. higher = 0
  46.  
  47. for j in range (dlugosc):
  48.    
  49.     posortowane.append (kopiec [0])
  50.     ost_index = dlugosc-2-j
  51.     kopiec [0] = kopiec [ost_index]
  52.     kopiec.remove (kopiec [ost_index])
  53.    
  54.    
  55.     nr = ost_index
  56.    
  57.    
  58. #ustalam czy ostatni z kopca jest jedynym dzieckiem
  59.    
  60.     higher_index = nr
  61.     if (nr % 2 == 0):
  62.         if (kopiec[ost_index-1] > kopiec[ost_index]):
  63.             higher_index = nr-1
  64.            
  65.    
  66.     nr = higher_index
  67.      
  68.     while (nr>0):
  69.                        
  70.         if (nr % 2 == 0):      
  71.             rodzic = int (nr/2) + 1
  72.         else:
  73.             rodzic = int (nr/2)
  74.         if (kopiec[nr]>kopiec[rodzic]):
  75.             kopiec [nr], kopiec [rodzic] = kopiec [rodzic], kopiec [nr]
  76.             nr = rodzic
  77.         else:
  78.             break
  79.        
  80.         if (nr % 2 == 0):
  81.             if (kopiec[nr-1]>kopiec[nr]):
  82.                 nr = nr-1
  83.         else:
  84.             if (kopiec[nr+1]>kopiec[nr]):
  85.                 nr = nr+1
  86.            
  87.        
  88.    
  89.  
  90.        
  91.    
  92.  
  93.  
  94.            
  95. for y in range (dlugosc):
  96.     print (posortowane [y], end=" ")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement