Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace Zad1
- {
- class Program
- {
- static void Napraw(int[] kopiec, int węzeł)
- {
- int wielkość = kopiec.Length;
- int największy = węzeł;
- int lewe = 2 * węzeł + 1;
- int prawe = 2 * węzeł + 2;
- if (lewe < wielkość && kopiec[lewe] > kopiec[największy])
- {
- największy = lewe;
- }
- if (prawe < wielkość && kopiec[prawe] > kopiec[największy])
- {
- największy = prawe;
- }
- if (największy != węzeł)
- {
- int pomoc = kopiec[węzeł];
- kopiec[węzeł] = kopiec[największy];
- kopiec[największy] = pomoc;
- Napraw(kopiec, największy);
- }
- }
- static void Buduj(int[] kopiec)
- {
- int wielkość = kopiec.Length;
- for (int i = (wielkość / 2 - 1); i >= 0; i--)
- Napraw(kopiec, i);
- }
- static int[] Wstaw(int[] kopiec, int wartość)
- {
- int[] kopiecNowy = new int[kopiec.Length + 1];
- for (int k = 0; k < kopiecNowy.Length; k++)
- {
- if (k != kopiecNowy.Length-1)
- {
- kopiecNowy[k] = kopiec[k];
- }
- else
- {
- kopiecNowy[k] = wartość;
- }
- }
- int i = kopiecNowy.Length - 1;
- int rodzic = (i - 1) / 2;
- while (i > 0 && kopiecNowy[rodzic] < wartość)
- {
- kopiecNowy[i] = kopiecNowy[rodzic];
- i = rodzic;
- rodzic = (i - 1) / 2;
- }
- kopiecNowy[i] = wartość;
- return kopiecNowy;
- }
- static int[] Usuń(int[] kopiec)
- {
- int ostatni = kopiec[kopiec.Length - 1];
- int[] kopiecNowy = new int[kopiec.Length - 1];
- for (int i = 0; i < kopiecNowy.Length; i++)
- {
- kopiecNowy[i] = kopiec[i];
- }
- kopiecNowy[0] = ostatni;
- Buduj(kopiecNowy);
- return kopiecNowy;
- }
- static bool CzyKopiec(int[] kopiec)
- {
- bool b = true;
- for (int i = 0; i < kopiec.Length / 2; i++)
- {
- if (kopiec[2 * i + 1] > kopiec[i])
- {
- b = false;
- Console.WriteLine(i);
- }
- if (2 * i + 2 < kopiec.Length && kopiec[2 * i + 2] > kopiec[i])
- {
- b = false;
- Console.WriteLine(i);
- }
- }
- return b;
- }
- static void Main(string[] args)
- {
- int[] dane = { 100, 19, 36, 17, 3, 25, 1, 2, 7 };
- Buduj(dane);
- // wypisz
- for (int i = 0; i < dane.Length; i++)
- Console.Write(dane[i] + " ");
- Console.WriteLine();
- int[] kopiecPoWstawieniu = Wstaw(dane, 10);
- Console.WriteLine(CzyKopiec(kopiecPoWstawieniu));
- Console.WriteLine(String.Join(" ", kopiecPoWstawieniu));
- Console.WriteLine(String.Join(",", Usuń(dane)));
- Console.ReadKey();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement