Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace KBurdzy_45610
- {
- class Program
- {
- static void Main(string[] args)
- {
- int[] kopiec = new int[20];
- int n = 0;
- Push(5, ref kopiec, ref n);
- Push(1, ref kopiec, ref n);
- Push(10, ref kopiec, ref n);
- Push(4, ref kopiec, ref n);
- Push(9, ref kopiec, ref n);
- Push(12, ref kopiec, ref n);
- Push(3, ref kopiec, ref n);
- wypisz(kopiec, n);
- int? v = Pop(ref kopiec, ref n);
- Console.WriteLine(v);
- wypisz(kopiec, n);
- Console.ReadLine();
- }
- static void wypisz(int[] T, int n)
- {
- for (int i = 0; i < n; i++)
- {
- Console.WriteLine(T[i] + " ");
- }
- Console.WriteLine();
- }
- static void Push(int v, ref int[] T, ref int n)
- {
- int syn = n;
- n++;
- int ojciec = (syn - 1) / 2;
- while (syn > 0 && T[ojciec] < v)
- {
- T[syn] = T[ojciec];
- syn = ojciec;
- ojciec = (syn - 1) / 2;
- }
- T[syn] = v;
- }
- static int? Pop(ref int[] T, ref int n)
- {
- if (n <= 0)
- return null;
- int DoZwrocenia = T[0];
- n--;
- int v = T[n];
- int ojciec = 0;
- int syn = 1;
- while (syn < n)
- {
- if ((2 * ojciec + 2 < n) && (T[syn + 1] > T[syn]))
- syn++;
- if (v >= T[syn])
- break;
- T[ojciec] = T[syn];
- ojciec = syn;
- syn = 2 * ojciec + 1;
- }
- T[ojciec] = v;
- return DoZwrocenia;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement