Facebook
From Speedy Butterfly, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 250
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. namespace ALgorytmy_projekt1
  10. {
  11.     class Program
  12.     {
  13.         const int rozmiar = 268435456;
  14.         static int[] Tab;
  15.         static long LicznikOperacji;
  16.  
  17.         static int WyszukajLiniowo(int wektor, int liczba)
  18.         {
  19.  
  20.             for (int i = 0; i < wektor; i++)
  21.             {
  22.                 LicznikOperacji++;
  23.                 if (Tab[i] == liczba) return i;
  24.             }
  25.             return -1;
  26.         }
  27.    
  28.         static void WyszLinPes()
  29.         {
  30.             Stopwatch stoper = new Stopwatch();
  31.             for (int i = 1; i <=10000; i+=100)
  32.             {
  33.                 int x = i;
  34.                 LicznikOperacji = 0;
  35.                 stoper.Start();
  36.                 WyszukajLiniowo(x, 0);
  37.                 stoper.Stop();
  38.                 Console.WriteLine("{0}| {1}| {2}", x, LicznikOperacji, stoper.ElapsedMilliseconds);
  39.                 stoper.Reset();
  40.             }
  41.         }
  42.  
  43.         static void WyszLinSre()
  44.         { Stopwatch stoper = new Stopwatch();
  45.            
  46.             for (int i = 0; i <= 10000; i +=100)
  47.             {
  48.                 int x = i;
  49.                 LicznikOperacji = 0;
  50.                 for (int j = 0; j < x; j++)
  51.                 {
  52.                     stoper.Start();
  53.                     WyszukajLiniowo(x, Tab[j]);
  54.                     stoper.Stop();
  55.                 }  
  56.                 Console.WriteLine("{0}| {1}| {2}", x, (((1.0*LicznikOperacji))/x),stoper.ElapsedMilliseconds);
  57.                 stoper.Reset();
  58.             }
  59.         }
  60.  
  61.         static int WyszukajBinarnie(int wektor, int liczba)
  62.         {
  63.             int Left = 0;
  64.             int Right = wektor - 1;
  65.             int Middle;
  66.             while (Left <= Right)
  67.             {
  68.                 LicznikOperacji++;
  69.                 Middle = (Left + Right) / 2;
  70.                 if (Tab[Middle] == liczba) return Middle;
  71.                 else if (Tab[Middle] > liczba) Right = Middle - 1;
  72.                 else Left = Middle + 1;
  73.             }
  74.             return -1;
  75.         }
  76.  
  77.         static void WyszBinPes()
  78.         {
  79.             Stopwatch stoper = new Stopwatch();
  80.             for (int i = 1; i <= 28; i++)
  81.             {
  82.                 int n = (1 << i);
  83.                 LicznikOperacji = 0;
  84.                 stoper.Start();
  85.                 WyszukajBinarnie(n, 0);
  86.                 stoper.Stop();
  87.                
  88.                 Console.WriteLine("{0}| {1}| {2}", n, LicznikOperacji,stoper.ElapsedMilliseconds);
  89.                 stoper.Reset();
  90.             }
  91.         }
  92.  
  93.         static void WyszBinSre()
  94.         {
  95.             Stopwatch stoper = new Stopwatch();
  96.             for (int i = 1; i <= 28; i++)
  97.             {
  98.                 int n = (1 << i);
  99.                 LicznikOperacji = 0;
  100.                 for (int j = 0; j < n; j++)
  101.                 {
  102.                     stoper.Start();
  103.                     WyszukajBinarnie(n, Tab[j]);
  104.                     stoper.Stop();
  105.                 }
  106.                 Console.WriteLine(" {0}| {1}| {2}", n,((1.0*LicznikOperacji)/n),stoper.ElapsedMilliseconds);
  107.                 stoper.Reset();
  108.             }
  109.            
  110.         }
  111.         static void Main(string[] args)
  112.         {
  113.             Tab = new int[rozmiar];
  114.             for (int i = 0; i < rozmiar; i++)
  115.             { Tab[i] = i + 1; }
  116.             WyszLinPes();
  117.             Console.WriteLine();
  118.             WyszLinSre();
  119.             Console.WriteLine();
  120.             WyszBinPes();
  121.             Console.WriteLine();
  122.             WyszBinSre();
  123.             Console.WriteLine("Done. ");
  124.             Console.ReadKey();
  125.         }
  126.     }
  127. }