Advertisement
Guest User

Untitled

a guest
Dec 16th, 2017
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.78 KB | None | 0 0
  1. public class Heap
  2.     {
  3.         public int heapSize;
  4.  
  5.         public List<City> data;
  6.  
  7.         public Heap()
  8.         {
  9.             heapSize = 0;
  10.             data = new List<City>();
  11.         }
  12.  
  13.         public Heap(List<City> _data)
  14.         {
  15.             heapSize = 0;
  16.             data = _data;
  17.         }
  18.  
  19.         public City getTop()
  20.         {
  21.             return data[0];
  22.         }
  23.  
  24.         public void print()
  25.         {
  26.             foreach(City city in data)
  27.             {
  28.                 Console.WriteLine(city.source + " za " + Program.d[city.source - 1]);
  29.             }
  30.             Console.WriteLine();
  31.         }
  32.  
  33.         private void Swap(int index1, int index2)
  34.         {
  35.             City tmp = data[index1];
  36.             data[index1] = data[index2];
  37.             data[index2] = tmp;
  38.         }
  39.  
  40.         /*
  41.          * root
  42.          * dziecko L roota
  43.          * dziecko P roota
  44.          * dziecko L dziecka L
  45.          * dziecko P dziecka L
  46.          * dziecko L dziecka P
  47.          * dziecko P dziecka P
  48.          *
  49.          * lewe dziecko 2n+1
  50.          * prawe dziecko 2n+2
  51.          *
  52.          * ojciec n-1/2
  53.          */
  54.  
  55.         public void push(City city)
  56.         {
  57.             data.Add(city);
  58.             heapSize++;
  59.             construct();
  60.         }
  61.  
  62.         public void construct()
  63.         {
  64.             int index = heapSize;
  65.  
  66.             while(index > 1)
  67.             {
  68.                 if(Program.d[data[index].source] < Program.d[data[index - 1 / 2].source])
  69.                 {
  70.                     Swap(index, index - 1 / 2);
  71.                 }
  72.  
  73.                 index = index - 1 / 2;
  74.             }
  75.         }
  76.  
  77.         public void pop()
  78.         {
  79.             data.RemoveAt(0);
  80.             heapSize--;
  81.             construct();
  82.         }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement