Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Diagnostics;
- namespace ProjektAlgorytm1
- {
- class Program
- {
- const int NIter = 2;
- static int WielkoscTablicy = 26843545;
- static void LiniowoCzas(int dlugosc)
- {
- int[] y = new int[dlugosc];
- for (int i = 1; i < dlugosc; i++)
- {
- y[i] = i;
- }
- double start = DateTime.Now.Ticks;
- for (int i = 0; i < dlugosc; i++)
- {
- if (y[i] == (dlugosc-1))
- {
- int miejsce = i + 1;
- break;
- }
- }
- double end = ((DateTime.Now.Ticks - start) / 10000000); //wynik w sekundach
- Console.WriteLine("Ilość elementów tablicy to "+dlugosc+ ". Czas do znalezienia ostatniego elementu to: " + end);
- }
- static void LinioweIloscKrokow(int dlugosc)
- {
- int[] y = new int[dlugosc];
- for (int i = 1; i < dlugosc; i++)
- {
- y[i] = i;
- }
- ulong iloscoperacji = 0;
- for (int i = 0; i < y.Length; i++)
- {
- iloscoperacji++;
- if (y[i] == (dlugosc - 1)) break;
- }
- Console.WriteLine("Ilość operacji w liniowym to " + iloscoperacji);
- }
- static void BinarnieCzas(int dlugosc)
- {
- int[] y = new int[dlugosc];
- for (int i = 1; i < dlugosc; i++)
- {
- y[i] = i;
- }
- {
- double CzasUS; // czas jaki upłynął w sekundach
- long CzasU = 0, MinimalnyCzas = long.MaxValue, MaxymalnyCzas = long.MinValue, IteracjaCzas;
- for (int n = 0; n < (NIter + 1 + 1); ++n)
- {
- long StartCzasu = Stopwatch.GetTimestamp();
- {
- int lewo = 0, prawo = y.Length - 1, srodek, kroki = 0;
- while (lewo <= prawo)
- {
- kroki++;
- srodek = (lewo + prawo) / 2;
- if (y[srodek] == dlugosc) break;
- else if (y[srodek] > dlugosc) prawo = srodek - 1;
- else lewo = srodek + 1;
- }
- }
- long KoniecCzasu = Stopwatch.GetTimestamp();
- IteracjaCzas = KoniecCzasu - StartCzasu;
- CzasU += IteracjaCzas;
- if (IteracjaCzas < MinimalnyCzas) MinimalnyCzas = IteracjaCzas;
- if (IteracjaCzas > MaxymalnyCzas) MaxymalnyCzas = IteracjaCzas;
- }
- CzasU -= (MinimalnyCzas + MaxymalnyCzas);
- CzasUS = CzasU * (1.0 / (NIter * Stopwatch.Frequency));
- Console.Write("Czas wyszukiwania binarnego dla tablicy z " + dlugosc + " elementami to: ");
- Console.Write("" + CzasUS.ToString("F8" )); // wyświetlenie do 8 miejsca po przecinku
- Console.WriteLine();
- }
- }
- static void BinarnieIloscKrokow(int dlugosc)
- {
- int[] y = new int[dlugosc];
- for (int i = 1; i < dlugosc; i++)
- {
- y[i] = i;
- }
- int lewo = 0, prawo = y.Length - 1, srodek, kroki=0;
- while (lewo <= prawo)
- {
- kroki++;
- srodek = (lewo + prawo) / 2;
- if (y[srodek] == dlugosc) break;
- else if (y[srodek] > dlugosc) prawo = srodek - 1;
- else lewo = srodek + 1;
- }
- Console.WriteLine("Dla "+dlugosc+" elementów, Ilość kroków to: " + kroki);
- }
- static int WybierzOpcje()
- {
- int a = 0;
- string str;
- while (true)
- {
- Console.Write("Podaj Liczbę: ");
- str = Console.ReadLine();
- if (int.TryParse(str, out a))
- break;
- else
- Console.WriteLine("Wprowadź liczbę 1,2,3,4,0");
- }
- return a;
- }
- static void WyswietlMenu()
- {
- Console.WriteLine("1 = przedstawienie czasu w wyszukiwaniu liniowym ");
- Console.WriteLine("2 = przedstawienie ilosci operacji w wyszukiwaniu liniowym ");
- Console.WriteLine("3 = przedstawienie czasu w wyszukiwaniu binarnym");
- Console.WriteLine("4 = Przedstawienie ilosci operacji w wyszukiwaniu binarnym");
- Console.WriteLine("0 = Wyjście z programu");
- }
- static void Main(string[] args)
- {
- Console.WriteLine("############################################################################");
- Console.WriteLine("Program oblicza czas i ilośc operacji w wyszukiwaniu liniowym oraz binarnym \nWartość najmniejsza tablicy to 26843545 i jest zwiększana z każym kolejnym krokiem o 26843545.");
- Console.WriteLine("############################################################################");
- while (true)
- {
- WyswietlMenu();
- int opcja = WybierzOpcje();
- switch (opcja)
- {
- case 0:
- return;
- case 1:
- for (int i = 0; i < 10; i++)
- {
- LiniowoCzas(WielkoscTablicy);
- WielkoscTablicy = WielkoscTablicy + 26843545;
- }
- break;
- case 2:
- for (int i = 0; i < 10; i++)
- {
- LinioweIloscKrokow(WielkoscTablicy);
- WielkoscTablicy = WielkoscTablicy + 26843545;
- }
- break;
- case 3:
- for (int i = 0; i < 10; i++)
- {
- BinarnieCzas(WielkoscTablicy);
- WielkoscTablicy = WielkoscTablicy + 26843545;
- }
- break;
- case 4:
- for (int i = 0; i < 10; i++)
- {
- BinarnieIloscKrokow(WielkoscTablicy);
- WielkoscTablicy = WielkoscTablicy + 26843545;
- }
- break;
- default:
- Console.WriteLine("Wprowadź co innego");
- Console.WriteLine(" ");
- break;
- }
- }
- /*
- //26843545
- for (int i = 0; i < 10; i++)
- {
- //LiniowoCzas(WielkoscTablicy);
- //LinioweIloscKrokow(WielkoscTablicy);
- //BinarnieCzas(WielkoscTablicy);
- //BinarnieIloscKrokow(WielkoscTablicy);
- WielkoscTablicy = WielkoscTablicy + 26843545; //26843545
- }
- //int WielkoscTablicy = 10;
- //BinarnieCzas(WielkoscTablicy);
- Console.ReadKey();
- */
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement