Untitled

 avatar
unknown
plain_text
a year ago
3.2 kB
1
Indexable
namespace Zadanie
{
    public class Program
    {
        private int liczba_rezerwacji_ram;
        private int max_liczba_rezerwacji_ram;

        public Program()
        {
            liczba_rezerwacji_ram = 0;
            max_liczba_rezerwacji_ram = 0;
        }

        public int GetLiczbęRezerwacjiRam()
        {
            return liczba_rezerwacji_ram;
        }

        public int GetMaxLiczbęRezerwacjiRAM()
        {
            return max_liczba_rezerwacji_ram;
        }

        private void QuickSort(int[] tab, int lewy, int prawy)
        {
            if (lewy < prawy)
            {
                int pivot = Dzielenie(tab, lewy, prawy);
                QuickSort(tab, lewy, pivot);
                QuickSort(tab, pivot + 1, prawy);
            }
        }

        private int Dzielenie(int[] tab, int lewy, int prawy)
        {
            int pivot = tab[lewy];
            int i = lewy;
            int j = prawy;

            while (true)
            {
                while (tab[i] < pivot)
                {
                    i++;
                    liczba_rezerwacji_ram++;
                }

                while (tab[j] > pivot)
                {
                    j--;
                    liczba_rezerwacji_ram++;
                }

                if (i < j)
                {
                    Zamiana(tab, i, j);
                    i++;
                    j--;
                }
                else
                {
                    if (j > max_liczba_rezerwacji_ram)
                    {
                        max_liczba_rezerwacji_ram = j;
                    }
                    return j;
                }
            }
        }

        private void Zamiana(int[] tab, int i, int j)
        {
            int x = tab[i];
            tab[i] = tab[j];
            tab[j] = x;
        }

        public static void Main(string[] args)
        {
            Console.Write("Podaj rozmiar tablicy: ");
            int n = int.Parse(Console.ReadLine());

            int[] tab = new int[n];

            // Generowanie losowej tablicy
            Random random = new Random();
            for (int i = 0; i < n; i++)
            {
                tab[i] = random.Next(10); // zakres od 0 do 99 (możesz dostosować)
            }

            Console.WriteLine("Tablica przed sortowaniem:");
            foreach (int x in tab)
            {
                Console.Write(" " + x);
            }
            Console.WriteLine();

            Program program = new Program();

            program.QuickSort(tab, 0, tab.Length - 1);

            Console.WriteLine();
            Console.WriteLine("Tablica po sortowaniu:");
            foreach (int x in tab)
            {
                Console.Write(" " + x);
            }

            Console.WriteLine("\nMaksymalna zajętość pamięci: " + program.GetMaxLiczbęRezerwacjiRAM());
            Console.WriteLine("Liczba rezerwacji pamięci: " + program.GetLiczbęRezerwacjiRam());
            Console.ReadLine();
        }
    }
}
Leave a Comment