Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace Zad2
- {
- interface IKolejkaPriorytetowa
- {
- int Wielkość
- {
- get;
- set;
- }
- void Wstaw(int wartość);
- int Usun();
- }
- class KolejkaPriorytetowaMin : IKolejkaPriorytetowa
- {
- public int Wielkość { get; set; }
- int[] dane;
- public KolejkaPriorytetowaMin(int[] dane)
- {
- Wielkość = 0;
- this.dane = dane;
- }
- public void Zamien(int index1, int index2)
- {
- int temp = dane[index1];
- dane[index1] = dane[index2];
- dane[index2] = temp;
- }
- public void Wstaw(int wartość)
- {
- int i = Wielkość++;
- int rodzic = (i - 1) / 2;
- while (i > 0 && dane[rodzic] > wartość) // tutaj sie sypie przy zmianie znaku
- {
- dane[i] = dane[rodzic];
- i = rodzic;
- rodzic = (i - 1) / 2;
- }
- dane[i] = wartość;
- }
- public int Usun()
- {
- int doUsuniecia = dane[0];
- if (Wielkość > 0)
- {
- int wartość = dane[Wielkość];
- int i = 0;
- int rodzic = 1;
- while (rodzic < Wielkość)
- {
- if (rodzic + 1 < Wielkość && dane[rodzic + 1] > dane[rodzic])
- {
- rodzic++;
- }
- if (wartość >= dane[rodzic])
- {
- break;
- }
- dane[i] = dane[rodzic];
- i = rodzic;
- rodzic = 2 * rodzic + 1;
- }
- dane[i] = wartość;
- }
- return doUsuniecia;
- }
- public void Wyswietl()
- {
- for (int i = 0; i <= Wielkość-1; i++)
- {
- Console.WriteLine(dane[i]);
- }
- Console.WriteLine();
- }
- public bool CzyKopiec()
- {
- bool b = true;
- for (int i = 0; i < dane.Length / 2; i++)
- {
- if (dane[2 * i + 1] > dane[i])
- {
- b = false;
- }
- if (2 * i + 2 < dane.Length && dane[2 * i + 2] > dane[i])
- {
- b = false;
- }
- }
- return b;
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- int[] dane = new int[20];
- KolejkaPriorytetowaMin kolejka = new KolejkaPriorytetowaMin(dane);
- kolejka.Wstaw(20);
- kolejka.Wstaw(15);
- kolejka.Wstaw(8);
- kolejka.Wstaw(10);
- kolejka.Wstaw(5);
- kolejka.Wstaw(7);
- kolejka.Wstaw(6);
- kolejka.Wstaw(2);
- kolejka.Wstaw(9);
- kolejka.Wstaw(1);
- Console.WriteLine(kolejka.CzyKopiec());
- kolejka.Wyswietl();
- Console.ReadKey();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement