Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.22 KB | None | 0 0
  1.  
  2. //QuickSort
  3. public static int Podziel(int[] tablica , int poczatek, int koniec)
  4. {
  5. int klucz = tablica[poczatek];
  6. while (true)
  7. {
  8. while (tablica[poczatek] <klucz)
  9. {
  10. poczatek++;
  11. }
  12. while (tablica[koniec]> klucz)
  13. {
  14. koniec--;
  15. }
  16.  
  17. if (poczatek < koniec)
  18. {
  19. if (tablica[poczatek] == tablica[koniec]) return koniec;
  20. int tmp = tablica[poczatek];
  21. tablica[poczatek] = tablica[koniec];
  22. tablica[koniec] = tmp;
  23. }
  24. else return koniec;
  25. }
  26. }
  27. public static void QuickSort(int[] tablica, int poczatek, int koniec)
  28. {
  29. if (poczatek<koniec)
  30. {
  31. int klucz = Podziel(tablica, poczatek, koniec);
  32. if (klucz>1)
  33. {
  34. QuickSort(tablica, poczatek, klucz -1);
  35. }
  36. if (klucz +1< koniec)
  37. {
  38. QuickSort(tablica, klucz + 1, koniec);
  39. }
  40.  
  41. }
  42. }
  43.  
  44.  
  45. //Sortowanie przez wstawianie (jak w kartach)
  46. public static int[] Sortowanie_przez_wstawianie(int[] tablica)
  47. {
  48. int klucz, j;
  49.  
  50. for (int i = 1; i < tablica.Length; i++)
  51. {
  52. klucz = tablica[i];
  53. j = i;
  54. while (j > 0 && tablica[j-1] > klucz) //sprawdza wpierw pierwszy warunek czyli j>0
  55. {
  56. tablica[j] = tablica[j-1 ];
  57. j--;
  58. }
  59. tablica[j] = klucz;
  60. }
  61.  
  62. return tablica;
  63.  
  64. }
  65.  
  66.  
  67. //Sortowanie przez scalanie/ MergeSort/łączenie (nie działa?)
  68. public static void Podział(int[] tab, int poczatek, int koniec, int[] tab2)
  69. {
  70. if (poczatek<koniec)
  71. {
  72. int mid = (poczatek + koniec) / 2;
  73. Podział(tab, poczatek, mid, tab2);
  74. Podział(tab, mid + 1, koniec, tab2);
  75. Scalaj(tab, poczatek, mid, koniec, tab2);
  76. }
  77. }
  78. public static void Scalaj(int[] tab, int poczatek, int mid, int koniec, int[] tab2)
  79. {
  80. int p1 = poczatek; int k1 = mid;
  81. int p2 = mid + 1; int k2 = koniec;
  82.  
  83. int i = p1;
  84.  
  85. while (p1<= k1 && p2<=k2)
  86. {
  87. if (tab[p1]>tab[p2])
  88. {
  89. tab2[i] = tab[p2];
  90. p2++;
  91. i++;
  92. }
  93. else
  94. {
  95. tab2[i] = tab[p1];
  96. p1++;
  97. i++;
  98. }
  99. }
  100.  
  101. while (p1<=k1)
  102. {
  103. tab2[i] = tab[p1];
  104. p1++;
  105. i++;
  106.  
  107. }
  108. while (p2<=k2)
  109. {
  110. tab2[i] = tab[p2];
  111. p2++;
  112. i++;
  113. }
  114. for (int f = 0; f < tab.Length; f++)
  115. {
  116. tab[f] = tab2[f];
  117. }
  118. }
  119.  
  120. //Sortowanie przez selekcję
  121. public static void Selekcja_Sort(int[] tablica)
  122. {
  123. for (int i = 0; i < tablica.Length-1; i++)
  124. {
  125. int k = i;
  126. for (int j = i + 1; j < tablica.Length; j++)
  127. {
  128. if (tablica[k] > tablica[j])
  129. {
  130. k = j;
  131. }
  132.  
  133.  
  134. int temp = tablica[k];
  135. tablica[k] = tablica[i];
  136. tablica[i] = temp;
  137.  
  138.  
  139. }
  140.  
  141. }
  142. }
  143.  
  144.  
  145. //Sortowanie bąbelkowe
  146.  
  147. public static void Bubble_Sort(int[] tab)
  148. {
  149. for (int i = 0; i < tab.Length-1; i++)
  150. {
  151. for (int j = 0; j < tab.Length-1; j++)
  152. {
  153. if (tab[j] >tab[j+1])
  154. {
  155. int temp = tab[j+1];
  156. tab[j+1] = tab[j];
  157. tab[j ] = temp;
  158. }
  159. }
  160. }
  161. }
  162.  
  163.  
  164.  
  165.  
  166. zad 2
  167. public static void Przedział(int[] ciąg, int x, int p, int k)
  168. {
  169. if (x < ciąg[k])
  170. {
  171. Console.WriteLine("<- nieskończoność, {0} >", ciąg[k]);
  172. return;
  173. }
  174. if (x > ciąg[p])
  175. {
  176. Console.WriteLine("< {0}, nieskończoność>", ciąg[p]);
  177. return;
  178. }
  179. int mid = (p + k) / 2;
  180.  
  181. if (p +1==k)
  182. {
  183. if (x == ciąg[p]) Console.WriteLine("< {0}, nieskończoność>", ciąg[p]);
  184. if (x == ciąg[k]) Console.WriteLine("Znajduje się miedzy: < {0} , {1} >" , ciąg[p] , ciąg[k] +1);
  185. else Console.WriteLine("Znajduje się miedzy: < {0} , {1} >", ciąg[p], ciąg[k] );
  186. return;
  187. }
  188.  
  189. if (x>= ciąg[mid])
  190. {
  191.  
  192.  
  193. Przedział(ciąg, x, p, mid);
  194. }
  195. else
  196. Przedział(ciąg, x, mid, k);
  197.  
  198.  
  199.  
  200. }
  201.  
  202.  
  203.  
  204. zad3
  205.  
  206. public static int[] Sortowanie_wstawianie(int[] tab)
  207. {
  208. int[] index = new int[tab.Length];
  209. for (int i = 0; i < tab.Length; i++)
  210. {
  211. index[i] = i;
  212. }
  213.  
  214.  
  215. int k, j;
  216. for (int i = 1; i < tab.Length; i++)
  217. {
  218. k = tab[i];
  219. int x = index[i];
  220. j = i;
  221. x = i;
  222. while (j>0 && tab[j-1] >k)
  223. {
  224. tab[j] = tab[j - 1];
  225. index[j] = index[j - 1];
  226. j--;
  227. }
  228. tab[j] = k;
  229. index[j] = x;
  230. }
  231. return index;
  232. }
  233.  
  234.  
  235. zad5
  236. public static int Kara(int[,] dół, int[,] prawo, int[,] skos,int wysokosc, int szerokosc, int[,] kroki )
  237. {
  238. int[,] wyniki= new int[wysokosc+1, szerokosc+1];
  239. wyniki[0, 0] = 0;
  240. for (int i = 1; i <=wysokosc; i++)
  241. {
  242. wyniki[i, 0] = wyniki[i-1, 0] + dół[i-1, 0];
  243. kroki[i, 0] = 1;
  244. }
  245. for (int j = 1; j <= szerokosc; j++)
  246. {
  247. wyniki[0, j] = wyniki[0, j - 1] + prawo[0, j - 1];
  248. kroki[0, j] = 2;
  249. }
  250. for (int i = 1; i <=wysokosc; i++)
  251. {
  252. for (int j = 1; j <= szerokosc; j++)
  253. {
  254. if (wyniki[i-1,j] + dół[i-1,j] > wyniki[i, j-1] +prawo[i,j-1] && prawo[i,j-1] !=-1)
  255. {
  256. if (wyniki[i, j - 1] + prawo[i, j - 1] > wyniki[i - 1, j - 1] + skos[i - 1, j - 1])
  257. {
  258. wyniki[i, j] = wyniki[i - 1, j - 1] + skos[i - 1, j - 1];
  259. kroki[i, j] = 3;
  260.  
  261. }
  262. else
  263. {
  264. wyniki[i, j] = wyniki[i, j - 1] + prawo[i, j - 1];
  265. kroki[i, j] = 2;
  266. }
  267. }
  268. else
  269. {
  270. if (wyniki[i - 1, j] + dół[i - 1, j] > wyniki[i - 1, j - 1] + skos[i - 1, j - 1])
  271. {
  272. wyniki[i, j] = wyniki[i - 1, j - 1] + skos[i - 1, j - 1];
  273. kroki[i, j] = 3;
  274. }
  275. else
  276. {
  277. wyniki[i, j] = wyniki[i - 1, j] + dół[i - 1, j];
  278. kroki[i, j] = 1;
  279. }
  280. }
  281.  
  282. }
  283. }
  284. return wyniki[wysokosc, szerokosc];
  285.  
  286.  
  287.  
  288.  
  289.  
  290. }
  291.  
  292.  
  293. public static void Ścieżka(int[,] kroki, int wysokosc,int szerokosc)
  294. {
  295. Stack<string> ścieżka = new Stack<string>();
  296. int i = wysokosc;
  297. int j = szerokosc;
  298. while (kroki[i,j] >0)
  299. {
  300. if (kroki[i,j] ==1)
  301. {
  302. ścieżka.Push("down");
  303. i--;
  304. }
  305.  
  306. if (kroki[i,j] ==2)
  307. {
  308. ścieżka.Push("right");
  309. j--;
  310. }
  311. else
  312. {
  313. ścieżka.Push("skos");
  314. i--;
  315. j--;
  316. }
  317. }
  318. while (ścieżka.Count>0)
  319. {
  320. Console.WriteLine(ścieżka.Pop());
  321. }
  322. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement