Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            int[] tab = new int[10] {
                1, 4, 14, -3, 22, 17, 102, 44, -90, 8
            };

            Console.WriteLine("Ktore sortowanie?");

            string[] values = Enum.GetNames(typeof(Sortowanie));
            foreach (string s in values)
            {
                Console.WriteLine(s);
            }
            string chosen = Console.ReadLine();

            Sortowanie chose = (Sortowanie)Enum.Parse(typeof(Sortowanie), chosen, true);

            switch ((int)chose)
            {
            case 0:
                Wybieranie wybieranie = new Wybieranie();
                wybieranie.Sort(tab);
                break;

            case 1:
                Wstawianie wstawianie = new Wstawianie();
                wstawianie.Sort(tab);
                break;

            case 2:
                Babelkowe babelkowe = new Babelkowe();
                babelkowe.Sort(tab);
                break;

            case 3:
                Szybkie szybkie = new Szybkie();
                szybkie.Sort(tab);
                break;

            default:
                break;
            }

            Console.ReadKey();
        }
        static void Krok5()
        {
            var Pracownicy = new List <Pracownik>();

            Pracownicy.Add(new Pracownik("Jania", new DateTime(2020, 10, 01), 1000));
            Pracownicy.Add(new Pracownik("Jania", new DateTime(2018, 11, 05), 2000));
            Pracownicy.Add(new Pracownik("Nowak", new DateTime(2019, 12, 07), 3000));
            Pracownicy.Add(new Pracownik("Kowalski", new DateTime(2019, 12, 07), 2500));
            Pracownicy.Add(new Pracownik("Nowakowski", new DateTime(2020, 09, 01), 3000));
            Pracownicy.Add(new Pracownik("Abacki", new DateTime(2017, 06, 22), 2000));
            Pracownicy.Add(new Pracownik("Abacki", new DateTime(2017, 06, 22), 3000));
            var listaInt = new List <int> {
                3, 7, 9, 1, 0, 2, 8, 6, 9, 3, 4
            };

            Console.WriteLine("------- Lista pracownikow -------");
            Console.WriteLine(string.Join('\n', Pracownicy));
            Console.WriteLine($"Lista liczb: {string.Join(',', listaInt)}");
            Console.WriteLine("--- Porządkowanie za pomocą własnej metody sortującej" + Environment.NewLine
                              + "zgodnie z naturalnym porządkiem zdefiniowanym w klasie Pracownik ---");
            Sortowanie.Sortuj(Pracownicy);
            Console.WriteLine(string.Join('\n', Pracownicy));
            //listaInt.Sortuj();
            listaInt.Sortuj();
            Console.WriteLine(string.Join(',', listaInt));
            Console.WriteLine();
            Console.WriteLine("--- Porządkowanie za pomocą własnej metody sortującej" + Environment.NewLine
                              + "zgodnie z porządkiem zdefiniowanym w klasie typu IComparer ---");
            Sortowanie.Sortuj(Pracownicy, new WgCzasuZatrudnieniaPotemWgWynagrodzeniaComparer());
            Console.WriteLine(string.Join('\n', Pracownicy));
            listaInt.Sortuj(new MyIntComparer());
            Console.WriteLine(string.Join(',', listaInt));
            Console.WriteLine("--- Porządkowanie za pomocą własnej metody sortującej" + Environment.NewLine
                              + "zgodnie z porządkiem zdefiniowanym przez delegat Comparison ---");
            Comparison <Pracownik> porwonywacz = (p1, p2) => (p1.Wynagrodzenie != p2.Wynagrodzenie) ? (-1) * p1.Wynagrodzenie.CompareTo(p2.Wynagrodzenie) : p1.CzasZatrudnienia.CompareTo(p2.CzasZatrudnienia);

            Sortowanie.Sortuj(Pracownicy, porwonywacz);
            Console.WriteLine(string.Join(',', Pracownicy));
            listaInt.Sortuj((x, y) => y - x);
            Console.WriteLine(string.Join(',', listaInt));
        }
Ejemplo n.º 3
0
        public void RunTest()
        {
            Console.WriteLine("Sortowanie");

            int[] TestowaTablica;

            int[] PosortowanaTablica;

            Sortowanie sort = new Sortowanie();

            Console.WriteLine("Przygotowane wczesniej dane");

            Console.WriteLine("\nSortowanie przez proste wybieranie");

            Console.WriteLine("Przed sortowaniem");
            TestowaTablica = Dane.ListaDanych.ToArray();
            Program.Wyswietl(TestowaTablica);

            PosortowanaTablica = sort.PrzezProsteWybieranie(TestowaTablica);

            Console.WriteLine("Po posortowaniu");
            Program.Wyswietl(PosortowanaTablica);


            Console.WriteLine("\nSortowanie przez proste wstawianie");

            Console.WriteLine("Przed sortowaniem");
            TestowaTablica = Dane.ListaDanych.ToArray();
            Program.Wyswietl(TestowaTablica);

            PosortowanaTablica = sort.PrzezProsteWstawianie(TestowaTablica);

            Console.WriteLine("Po posortowaniu");
            Program.Wyswietl(PosortowanaTablica);



            Console.WriteLine("\nSortowanie babelkowe");

            Console.WriteLine("Przed sortowaniem");
            TestowaTablica = Dane.ListaDanych.ToArray();
            Program.Wyswietl(TestowaTablica);

            PosortowanaTablica = sort.Babelkowe(TestowaTablica);

            Console.WriteLine("Po posortowaniu");
            Program.Wyswietl(PosortowanaTablica);



            Console.WriteLine("\nSortowanie szybkie");

            Console.WriteLine("Przed sortowaniem");
            TestowaTablica = Dane.ListaDanych.ToArray();
            Program.Wyswietl(TestowaTablica);

            PosortowanaTablica = new Sortowanie.QuickSort().Sortuj(TestowaTablica);

            Console.WriteLine("Po posortowaniu");
            Program.Wyswietl(PosortowanaTablica);



            int iloscElementow = 25;

            Console.WriteLine("Losowe dane (" + iloscElementow + " elementow)");

            Console.WriteLine("\nSortowanie przez proste wybieranie");

            Console.WriteLine("Przed sortowaniem");
            TestowaTablica = Dane.LosowaLista(iloscElementow).ToArray();
            Program.Wyswietl(TestowaTablica);

            PosortowanaTablica = sort.PrzezProsteWybieranie(TestowaTablica);

            Console.WriteLine("Po posortowaniu");
            Program.Wyswietl(PosortowanaTablica);


            Console.WriteLine("\nSortowanie przez proste wstawianie");

            Console.WriteLine("Przed sortowaniem");
            TestowaTablica = Dane.LosowaLista(iloscElementow).ToArray();
            Program.Wyswietl(TestowaTablica);

            PosortowanaTablica = sort.PrzezProsteWstawianie(TestowaTablica);

            Console.WriteLine("Po posortowaniu");
            Program.Wyswietl(PosortowanaTablica);



            Console.WriteLine("\nSortowanie babelkowe");

            Console.WriteLine("Przed sortowaniem");
            TestowaTablica = Dane.LosowaLista(iloscElementow).ToArray();
            Program.Wyswietl(TestowaTablica);

            PosortowanaTablica = sort.Babelkowe(TestowaTablica);

            Console.WriteLine("Po posortowaniu");
            Program.Wyswietl(PosortowanaTablica);



            Console.WriteLine("\nSortowanie szybkie");

            Console.WriteLine("Przed sortowaniem");
            TestowaTablica = Dane.LosowaLista(iloscElementow).ToArray();
            Program.Wyswietl(TestowaTablica);

            PosortowanaTablica = new Sortowanie.QuickSort().Sortuj(TestowaTablica);

            Console.WriteLine("Po posortowaniu");
            Program.Wyswietl(PosortowanaTablica);


            Console.WriteLine("\nSortowanie kubełkowe");

            Console.WriteLine("Przed sortowaniem");
            TestowaTablica = Dane.LosowaLista(iloscElementow).ToArray();
            Program.Wyswietl(TestowaTablica);

            PosortowanaTablica = sort.Kubelkowe(TestowaTablica);

            Console.WriteLine("Po posortowaniu");
            Program.Wyswietl(PosortowanaTablica);
        }
        private void mvBtn_TablicaPoSortowaniu_Click(object sender, EventArgs e)
        {
            int   mvLicznikOD;
            float SumaOD, ŚredniaOD;


            Random Rnd = new Random();
            // deklaracja zmiennej refrencyjnej i utworzenie egzemplarza klasy Sortowanie
            Sortowanie AlgorytmySortowania = new Sortowanie();

            // powtarzanie badania algorytmów dla wszystkich rozmiarów tablic
            for (int l = 0; l < MaxRozmiarTabl; l++)
            {
                // wielokrotne powtarzanie badania kosztów czasowych algorytmu sortowania
                for (int k = 0; k < PróbaBadawcza; k++)
                {
                    // wylosowanie wartości elementów Tabl
                    for (int i = 0; i < MaxRozmiarTabl; i++)
                    {
                        Tabl[i]          = Rnd.NextDouble() * (GórnaGranicaWartości - DolnaGranicaWartości) + DolnaGranicaWartości;
                        TablPrzedSort[i] = Tabl[i];
                    }

                    //if (k==0) {
                    //    TablPrzedSort = Tabl;
                    //    //foreach (double item in TablPrzedSort)
                    //    //{
                    //    //    Debug.WriteLine(item);
                    //    //}
                    //}
                    // wywołanie metody sortowania
                    switch (mvCb_Algorytm.SelectedIndex)
                    {
                    case 0:
                        mvLicznikOD = AlgorytmySortowania.SelectSort(ref Tabl, l + 1);
                        break;

                    case 1: mvLicznikOD = AlgorytmySortowania.InsertionSort(ref Tabl, l + 1);
                        break;

                    case 2:
                        mvLicznikOD = AlgorytmySortowania.ShellSort(ref Tabl, l + 1);
                        break;

                    case 3:
                        mvLicznikOD = AlgorytmySortowania.ShakeSort(ref Tabl, l + 1);
                        break;

                    // Case'y dla kolejnych metod sortowania
                    default:
                        errorProvider1.SetError(mvBtn_TabelarycznaPrezentacja,
                                                "UWAGA: jeszcze tej metody nie opracowałem!!!"); return;
                    }
                    // Zapamiętanie LicznikaOD
                    TablicaLOD[k] = mvLicznikOD;
                }


                //KosztPamieci[l] = GC.GetTotalMemory(false);
                // od for (int k = 0; k < PróbaBadawcza; k++)
                // obliczenie średniej arytmetycznej wykonanych Operacji Dominujących
                SumaOD = 0.0F;  // początkowy stan obliczeń
                for (int j = 0; j < PróbaBadawcza; j++)
                {
                    SumaOD = SumaOD + TablicaLOD[j];
                }
                // obliczenie średniej arytmetycznej
                ŚredniaOD = SumaOD / PróbaBadawcza;
                /* wpisanie średniej liczby wykonanych operacji dominujących w tablicy WynikiZpomiaru */
                WynikiZpomiaru[l] = ŚredniaOD;
                // obliczenie kosztu czasowego ze wzoru analitycznego
                switch (mvCb_Algorytm.SelectedIndex)
                {
                case 0: WynikiAnalityczne[l] = (l * (l - 1)) / 2;
                    //SWynikiAnalityczne[l] = l * l;
                    break;

                case 1:
                    WynikiAnalityczne[l] = (l * (l - 1)) / 2;
                    //SWynikiAnalityczne[l] = l * l;
                    break;

                case 2:
                    WynikiAnalityczne[l] = (float)((float)l * Math.Pow(Math.Log10(l), 2));
                    break;

                case 3:
                    WynikiAnalityczne[l] = (l * (l - 1)) / 2;
                    //SWynikiAnalityczne[l] = l * l;
                    break;

                // Case'y dla kolejnych metod sortowania
                default:
                    errorProvider1.SetError(mvBtn_TabelarycznaPrezentacja,
                                            "UWAGA: prace nad tym algorytmem, który został " + "wybrany jeszcze trwają!!!");
                    return;
                }
            }


            // wpisanie danych wynikowych do kontrolki DataGridView
            for (int i = 0; i < MaxRozmiarTabl; i++)
            {
                mvDgv_Tablica.Rows.Add();
                // wpisujemy wyniki do poszczególnych komórek
                mvDgv_Tablica.Rows[i].Cells[0].Value = i;
                mvDgv_Tablica.Rows[i].Cells[1].Value = String.Format("{0, 8:F3}", Tabl[i]);

                // naprzemienna zmiana tła wierszy w kontrolce DataGridView
                if ((i % 2) == 0)
                {
                    mvDgv_Tablica.Rows[i].Cells[0].Style.BackColor = Color.LightGray;
                    mvDgv_Tablica.Rows[i].Cells[1].Style.BackColor = Color.LightGray;
                }
                else
                {
                    mvDgv_Tablica.Rows[i].Cells[0].Style.BackColor = Color.White;
                    mvDgv_Tablica.Rows[i].Cells[1].Style.BackColor = Color.White;
                }
                // wycentrowanie zapisów w poszczególnych komórkach formatowanego wierszy
                mvDgv_Tablica.Rows[i].Cells[0].Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                mvDgv_Tablica.Rows[i].Cells[1].Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            }
            // odsłonięcie kontrolki DataGridView
            mvDgv_Tablica.Visible = true;
            // wyświetlenie okna dialogowego z potwierdzeniem wybranej metody sortowania
            MessageBox.Show("Przeprowadzono sortowanie algorytmem: " + mvCb_Algorytm.SelectedIndex);
            // ustawienie stanu braku aktywności dla przycisku poleceń
            mvBtn_TablicaPoSortowaniu.Enabled = false;
            // uaktywnienie przycisków funkcjonalnych
            mvBtn_TabelarycznaPrezentacja.Enabled = true;
            mvBtn_GraficznaPrezentacja.Enabled    = true;
            mvBtn_Resetuj.Enabled = true;
            mvBtn_Demo.Enabled    = true;
            mvBtn_TablicaPrzedSortowaniem.Enabled = true;
        }