Advertisement
gride29

zad1

Dec 8th, 2020
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.48 KB | None | 0 0
  1. using System;
  2.  
  3. namespace Zad1
  4. {
  5.     class Program
  6.     {
  7.         static void Napraw(int[] kopiec, int węzeł)
  8.         {
  9.             int wielkość = kopiec.Length;
  10.             int największy = węzeł;
  11.             int lewe = 2 * węzeł + 1;
  12.             int prawe = 2 * węzeł + 2;
  13.            
  14.             if (lewe < wielkość && kopiec[lewe] > kopiec[największy])
  15.             {
  16.                 największy = lewe;
  17.             }
  18.             if (prawe < wielkość && kopiec[prawe] > kopiec[największy])
  19.             {
  20.                 największy = prawe;
  21.             }
  22.             if (największy != węzeł)
  23.             {
  24.                 int pomoc = kopiec[węzeł];
  25.                 kopiec[węzeł] = kopiec[największy];
  26.                 kopiec[największy] = pomoc;
  27.                 Napraw(kopiec, największy);
  28.             }
  29.         }
  30.  
  31.         static void Buduj(int[] kopiec)
  32.         {
  33.             int wielkość = kopiec.Length;
  34.             for (int i = (wielkość / 2 - 1); i >= 0; i--)
  35.                 Napraw(kopiec, i);
  36.         }
  37.  
  38.         static int[] Wstaw(int[] kopiec, int wartość)
  39.         {
  40.             int[] kopiecNowy = new int[kopiec.Length + 1];
  41.             for (int k = 0; k < kopiecNowy.Length; k++)
  42.             {
  43.                 if (k != kopiecNowy.Length-1)
  44.                 {
  45.                     kopiecNowy[k] = kopiec[k];
  46.                 }
  47.                 else
  48.                 {
  49.                     kopiecNowy[k] = wartość;
  50.                 }
  51.             }
  52.             int i = kopiecNowy.Length - 1;
  53.             int rodzic = (i - 1) / 2;
  54.             while (i > 0 && kopiecNowy[rodzic] < wartość)
  55.             {
  56.                 kopiecNowy[i] = kopiecNowy[rodzic];
  57.                 i = rodzic;
  58.                 rodzic = (i - 1) / 2;
  59.             }
  60.             kopiecNowy[i] = wartość;
  61.             return kopiecNowy;
  62.         }
  63.  
  64.         static int[] Usuń(int[] kopiec)
  65.         {
  66.             int ostatni = kopiec[kopiec.Length - 1];
  67.             int[] kopiecNowy = new int[kopiec.Length - 1];
  68.             for (int i = 0; i < kopiecNowy.Length; i++)
  69.             {
  70.                 kopiecNowy[i] = kopiec[i];
  71.             }
  72.             kopiecNowy[0] = ostatni;
  73.             Buduj(kopiecNowy);
  74.             return kopiecNowy;
  75.         }
  76.  
  77.         static bool CzyKopiec(int[] kopiec)
  78.         {
  79.             bool b = true;
  80.             for (int i = 0; i < kopiec.Length / 2; i++)
  81.             {
  82.                 if (kopiec[2 * i + 1] > kopiec[i])
  83.                 {
  84.                     b = false;
  85.                     Console.WriteLine(i);
  86.                 }
  87.                 if (2 * i + 2 < kopiec.Length && kopiec[2 * i + 2] > kopiec[i])
  88.                 {
  89.                     b = false;
  90.                     Console.WriteLine(i);
  91.                 }
  92.             }
  93.             return b;
  94.         }
  95.  
  96.         static void Main(string[] args)
  97.         {
  98.             int[] dane = { 100, 19, 36, 17, 3, 25, 1, 2, 7 };
  99.            
  100.             Buduj(dane);
  101.            
  102.             // wypisz
  103.             for (int i = 0; i < dane.Length; i++)
  104.                 Console.Write(dane[i] + " ");
  105.            
  106.             Console.WriteLine();
  107.  
  108.             int[] kopiecPoWstawieniu = Wstaw(dane, 10);
  109.            
  110.             Console.WriteLine(CzyKopiec(kopiecPoWstawieniu));
  111.  
  112.             Console.WriteLine(String.Join(" ", kopiecPoWstawieniu));
  113.  
  114.             Console.WriteLine(String.Join(",", Usuń(dane)));
  115.  
  116.             Console.ReadKey();
  117.         }
  118.     }
  119. }
  120.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement