Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.52 KB | None | 0 0
  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 dla " +dlugosc+ " elementów 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("5 = Średnia złożoność wyszukiwania liniowego");
  141.  
  142. Console.WriteLine("6 = Średnia złożoność wyszukiwania binarnego");
  143.  
  144. Console.WriteLine("0 = Wyjście z programu");
  145.  
  146. }
  147.  
  148. static void SredniaLiniowe(int dlugosc)
  149. {
  150. int[] y = new int[dlugosc];
  151. for (int i = 1; i < dlugosc; i++)
  152. {
  153. y[i] = i;
  154. }
  155. int dzielenie = dlugosc*1/2;
  156. int srednia = dzielenie + 1 / 2;
  157. Console.WriteLine("Średni wynik dla "+dlugosc+ "elementów to " + srednia);
  158.  
  159. }
  160.  
  161. static void SredniaBinarnie(int dlugosc)
  162. {
  163. int[] y = new int[dlugosc];
  164. for (int i = 1; i < dlugosc; i++)
  165. {
  166. y[i] = i;
  167. }
  168.  
  169. int lewo = 0, prawo = y.Length - 1, srodek, kroki = 0;
  170. while (lewo <= prawo)
  171. {
  172. kroki++;
  173. srodek = (lewo + prawo) / 2;
  174. if (y[srodek] == dlugosc) break;
  175. else if (y[srodek] > dlugosc) prawo = srodek - 1;
  176. else lewo = srodek + 1;
  177. }
  178. Console.WriteLine("Dla "+dlugosc+ "elementów, średni czas wykonania to " + Math.Log(y.Length).ToString("F0"));
  179. }
  180.  
  181. static void Main(string[] args)
  182. {
  183. Console.WriteLine("############################################################################");
  184. 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.");
  185. Console.WriteLine("############################################################################");
  186. while (true)
  187. {
  188. WyswietlMenu();
  189. int opcja = WybierzOpcje();
  190. int WielkoscTablicy = 268435;
  191. switch (opcja)
  192. {
  193. case 0:
  194. return;
  195.  
  196. case 1:
  197. for (int i = 0; i < 10; i++)
  198. {
  199. LiniowoCzas(WielkoscTablicy);
  200. WielkoscTablicy = WielkoscTablicy + 26843545;
  201. }
  202. break;
  203. case 2:
  204. for (int i = 0; i < 10; i++)
  205. {
  206. LinioweIloscKrokow(WielkoscTablicy);
  207. WielkoscTablicy = WielkoscTablicy + 26843545;
  208. }
  209. break;
  210. case 3:
  211. for (int i = 0; i < 10; i++)
  212. {
  213. BinarnieCzas(WielkoscTablicy);
  214. WielkoscTablicy = WielkoscTablicy + 26843545;
  215. }
  216. break;
  217. case 4:
  218. for (int i = 0; i < 10; i++)
  219. {
  220. BinarnieIloscKrokow(WielkoscTablicy);
  221. WielkoscTablicy = WielkoscTablicy + 26843545;
  222. }
  223. break;
  224. case 5:
  225. for (int i = 0; i < 10; i++)
  226. {
  227. SredniaLiniowe(WielkoscTablicy);
  228. WielkoscTablicy = WielkoscTablicy + 26843545;
  229. }
  230. break;
  231. case 6:
  232. for (int i = 0; i < 10; i++)
  233. {
  234. SredniaBinarnie(WielkoscTablicy);
  235. WielkoscTablicy = WielkoscTablicy + 26843545;
  236. }
  237. break;
  238. default:
  239. Console.WriteLine("Wprowadź co innego");
  240. Console.WriteLine(" ");
  241. break;
  242. }
  243. }
  244. /*
  245. //26843545
  246. for (int i = 0; i < 10; i++)
  247. {
  248. //LiniowoCzas(WielkoscTablicy);
  249. //LinioweIloscKrokow(WielkoscTablicy);
  250. //BinarnieCzas(WielkoscTablicy);
  251. //BinarnieIloscKrokow(WielkoscTablicy);
  252.  
  253. WielkoscTablicy = WielkoscTablicy + 26843545; //26843545
  254. }
  255.  
  256.  
  257. //int WielkoscTablicy = 10;
  258. //BinarnieCzas(WielkoscTablicy);
  259. Console.ReadKey();
  260. */
  261. }
  262. }
  263. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement