Advertisement
Guest User

kacpi

a guest
Jan 21st, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace KBurdzy_45610
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. int[] kopiec = new int[20];
  14. int n = 0;
  15.  
  16. Push(5, ref kopiec, ref n);
  17. Push(1, ref kopiec, ref n);
  18. Push(10, ref kopiec, ref n);
  19. Push(4, ref kopiec, ref n);
  20. Push(9, ref kopiec, ref n);
  21. Push(12, ref kopiec, ref n);
  22. Push(3, ref kopiec, ref n);
  23.  
  24.  
  25. wypisz(kopiec, n);
  26.  
  27. int? v = Pop(ref kopiec, ref n);
  28. Console.WriteLine(v);
  29. wypisz(kopiec, n);
  30. Console.ReadLine();
  31. }
  32.  
  33. static void wypisz(int[] T, int n)
  34. {
  35. for (int i = 0; i < n; i++)
  36. {
  37. Console.WriteLine(T[i] + " ");
  38. }
  39. Console.WriteLine();
  40. }
  41.  
  42. static void Push(int v, ref int[] T, ref int n)
  43. {
  44. int syn = n;
  45. n++;
  46. int ojciec = (syn - 1) / 2;
  47. while (syn > 0 && T[ojciec] < v)
  48. {
  49. T[syn] = T[ojciec];
  50. syn = ojciec;
  51. ojciec = (syn - 1) / 2;
  52. }
  53. T[syn] = v;
  54. }
  55.  
  56. static int? Pop(ref int[] T, ref int n)
  57. {
  58. if (n <= 0)
  59. return null;
  60.  
  61. int DoZwrocenia = T[0];
  62. n--;
  63. int v = T[n];
  64.  
  65. int ojciec = 0;
  66. int syn = 1;
  67. while (syn < n)
  68. {
  69. if ((2 * ojciec + 2 < n) && (T[syn + 1] > T[syn]))
  70. syn++;
  71.  
  72. if (v >= T[syn])
  73. break;
  74. T[ojciec] = T[syn];
  75. ojciec = syn;
  76. syn = 2 * ojciec + 1;
  77.  
  78.  
  79.  
  80.  
  81.  
  82. }
  83. T[ojciec] = v;
  84. return DoZwrocenia;
  85. }
  86. }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement