daily pastebin goal
29%
SHARE
TWEET

Untitled

a guest Mar 25th, 2019 69 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Diagnostics;
  7.  
  8. namespace ProjektAlgorytm1
  9. {
  10.     class Program
  11.     {
  12.         const int NIter = 2;
  13.         static int WielkoscTablicy = 26843545;
  14.  
  15.  
  16.         static void LiniowoCzas(int dlugosc)
  17.         {
  18.             int[] y = new int[dlugosc];
  19.             for (int i = 1; i < dlugosc; i++)
  20.             {
  21.                 y[i] = i;
  22.             }
  23.  
  24.             double start = DateTime.Now.Ticks;
  25.             for (int i = 0; i < dlugosc; i++)
  26.             {
  27.                 if (y[i] == (dlugosc-1))
  28.                 {
  29.                     int miejsce = i + 1;
  30.                     break;
  31.                 }
  32.             }
  33.             double end = ((DateTime.Now.Ticks - start) / 10000000); //wynik w sekundach
  34.             Console.WriteLine("Ilość elementów tablicy to "+dlugosc+ ". Czas do znalezienia ostatniego elementu to: " + end);
  35.         }
  36.         static void LinioweIloscKrokow(int dlugosc)
  37.         {
  38.             int[] y = new int[dlugosc];
  39.             for (int i = 1; i < dlugosc; i++)
  40.             {
  41.                 y[i] = i;
  42.             }
  43.            
  44.             ulong iloscoperacji = 0;
  45.             for (int i = 0; i < y.Length; i++)
  46.                 {
  47.                 iloscoperacji++;
  48.                 if (y[i] == (dlugosc - 1)) break;
  49.                 }
  50.             Console.WriteLine("Ilość operacji w liniowym to " + iloscoperacji);            
  51.  
  52.         }
  53.  
  54.         static void BinarnieCzas(int dlugosc)
  55.         {
  56.             int[] y = new int[dlugosc];
  57.             for (int i = 1; i < dlugosc; i++)
  58.             {
  59.                 y[i] = i;
  60.             }
  61.             {
  62.                 double CzasUS; // czas jaki upłynął w sekundach
  63.                 long CzasU = 0, MinimalnyCzas = long.MaxValue, MaxymalnyCzas = long.MinValue, IteracjaCzas;
  64.                 for (int n = 0; n < (NIter + 1 + 1); ++n)
  65.                 {
  66.                     long StartCzasu = Stopwatch.GetTimestamp();
  67.  
  68.                     {
  69.                         int lewo = 0, prawo = y.Length - 1, srodek, kroki = 0;
  70.                         while (lewo <= prawo)
  71.                         {
  72.                             kroki++;
  73.                             srodek = (lewo + prawo) / 2;
  74.                             if (y[srodek] == dlugosc) break;
  75.                             else if (y[srodek] > dlugosc) prawo = srodek - 1;
  76.                             else lewo = srodek + 1;
  77.                         }
  78.                     }
  79.                     long KoniecCzasu = Stopwatch.GetTimestamp();
  80.                     IteracjaCzas = KoniecCzasu - StartCzasu;
  81.                     CzasU += IteracjaCzas;
  82.                     if (IteracjaCzas < MinimalnyCzas) MinimalnyCzas = IteracjaCzas;
  83.                     if (IteracjaCzas > MaxymalnyCzas) MaxymalnyCzas = IteracjaCzas;
  84.                 }
  85.                 CzasU -= (MinimalnyCzas + MaxymalnyCzas);
  86.                 CzasUS = CzasU * (1.0 / (NIter * Stopwatch.Frequency));
  87.                 Console.Write("Czas wyszukiwania binarnego dla tablicy z " + dlugosc + " elementami to: ");
  88.                 Console.Write("" + CzasUS.ToString("F8" )); // wyświetlenie do 8 miejsca po przecinku
  89.                 Console.WriteLine();
  90.             }
  91.  
  92.         }
  93.         static void BinarnieIloscKrokow(int dlugosc)
  94.         {
  95.             int[] y = new int[dlugosc];
  96.             for (int i = 1; i < dlugosc; i++)
  97.             {
  98.                 y[i] = i;
  99.             }
  100.  
  101.             int lewo = 0, prawo = y.Length - 1, srodek, kroki=0;
  102.             while (lewo <= prawo)
  103.             {
  104.                 kroki++;
  105.                 srodek = (lewo + prawo) / 2;
  106.                 if (y[srodek] == dlugosc) break;
  107.                 else if (y[srodek] > dlugosc) prawo = srodek - 1;
  108.                 else lewo = srodek + 1;
  109.             }
  110.             Console.WriteLine("Dla "+dlugosc+" elementów, Ilość kroków to: " + kroki);
  111.         }
  112.  
  113.         static int WybierzOpcje()
  114.         {
  115.             int a = 0;
  116.             string str;
  117.             while (true)
  118.             {
  119.                 Console.Write("Podaj Liczbę: ");
  120.                 str = Console.ReadLine();
  121.                 if (int.TryParse(str, out a))
  122.                     break;
  123.                 else
  124.                     Console.WriteLine("Wprowadź liczbę 1,2,3,4,0");
  125.             }
  126.  
  127.             return a;
  128.         }
  129.         static void WyswietlMenu()
  130.         {
  131.  
  132.             Console.WriteLine("1 = przedstawienie czasu w wyszukiwaniu liniowym ");
  133.  
  134.             Console.WriteLine("2 = przedstawienie ilosci operacji w wyszukiwaniu liniowym ");
  135.  
  136.             Console.WriteLine("3 = przedstawienie czasu w wyszukiwaniu binarnym");
  137.  
  138.             Console.WriteLine("4 = Przedstawienie ilosci operacji w wyszukiwaniu binarnym");
  139.  
  140.             Console.WriteLine("0 = Wyjście z programu");
  141.  
  142.         }
  143.  
  144.         static void Main(string[] args)
  145.         {
  146.             Console.WriteLine("############################################################################");
  147.             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.");
  148.             Console.WriteLine("############################################################################");
  149.             while (true)
  150.                 {
  151.                 WyswietlMenu();
  152.                     int opcja = WybierzOpcje();
  153.                     switch (opcja)
  154.                     {
  155.                      case 0:
  156.                             return;
  157.  
  158.                      case 1:
  159.                         for (int i = 0; i < 10; i++)
  160.                         {
  161.                             LiniowoCzas(WielkoscTablicy);
  162.                             WielkoscTablicy = WielkoscTablicy + 26843545;
  163.                         }
  164.                         break;
  165.                     case 2:
  166.                         for (int i = 0; i < 10; i++)
  167.                         {
  168.                             LinioweIloscKrokow(WielkoscTablicy);
  169.                             WielkoscTablicy = WielkoscTablicy + 26843545;
  170.                         }
  171.                         break;
  172.                     case 3:
  173.                         for (int i = 0; i < 10; i++)
  174.                         {
  175.                             BinarnieCzas(WielkoscTablicy);
  176.                             WielkoscTablicy = WielkoscTablicy + 26843545;
  177.                         }
  178.                         break;
  179.                     case 4:
  180.                         for (int i = 0; i < 10; i++)
  181.                         {
  182.                             BinarnieIloscKrokow(WielkoscTablicy);
  183.                             WielkoscTablicy = WielkoscTablicy + 26843545;
  184.                         }
  185.                         break;
  186.                     default:
  187.                             Console.WriteLine("Wprowadź co innego");
  188.                             Console.WriteLine(" ");
  189.                             break;
  190.                     }
  191.                 }
  192.             /*    
  193.             //26843545
  194.             for (int i = 0; i < 10; i++)
  195.             {
  196.                 //LiniowoCzas(WielkoscTablicy);
  197.                 //LinioweIloscKrokow(WielkoscTablicy);
  198.                 //BinarnieCzas(WielkoscTablicy);
  199.                 //BinarnieIloscKrokow(WielkoscTablicy);
  200.  
  201.                 WielkoscTablicy = WielkoscTablicy + 26843545; //26843545
  202.             }
  203.  
  204.            
  205.             //int WielkoscTablicy = 10;
  206.             //BinarnieCzas(WielkoscTablicy);
  207.             Console.ReadKey();
  208.             */
  209.         }
  210.     }
  211. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top