Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.58 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 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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement