Advertisement
Guest User

Untitled

a guest
Jan 26th, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.40 KB | None | 0 0
  1. using System;
  2. using System.Text;
  3.  
  4. namespace sortowania_konsola
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. int[] tablica = new int[] { 1, 0, 8, 4, 2, 5, 3 };
  11. //int[] tablica2 = new double[] { 1.5, 0.7, 8, 4, 2, 5, 3.3 };
  12. //BubbleSort(tablica);
  13. //int[] posortowana = Zliczanie(tablica);
  14. //Zliczanie(tablica);
  15. //Wybieranie(tablica);
  16. //Wstawianie(tablica);
  17. /*foreach (int liczba in posortowana)
  18. {
  19. Console.WriteLine(liczba);
  20. }*/
  21. //Szybkie(tablica, 0, tablica.Length - 1);
  22. MergeSort(tablica, 0, tablica.Length - 1);
  23. foreach (int liczba in tablica)
  24. {
  25. Console.Write(liczba + " ");
  26. }
  27. Console.ReadKey();
  28. }
  29.  
  30. static int[] BubbleSort(int[] array)
  31. {
  32. int tmp;
  33. for (int i = 0; i < array.Length; i++)
  34. {
  35. for (int j = 0; j < array.Length - 1; j++)
  36. {
  37. if (array[j] > array[j + 1])
  38. {
  39. tmp = array[j];
  40. array[j] = array[j + 1];
  41. array[j + 1] = tmp;
  42. }
  43. }
  44. }
  45. return array;
  46. }
  47.  
  48. static int[] CountingSort(int[] array)
  49. {
  50. int[] sorted = new int[array.Length];
  51. int minVal = array[0];
  52. int maxVal = array[0];
  53. for (int i = 1; i < array.Length; i++)
  54. {
  55. if (array[i] < minVal) minVal = array[i];
  56. else if (array[i] > maxVal) maxVal = array[i];
  57. }
  58.  
  59. int[] counts = new int[maxVal - minVal + 1];
  60.  
  61. for (int i = 0; i < array.Length; i++)
  62. {
  63. counts[array[i] - minVal]++;
  64. }
  65.  
  66. counts[0]--;
  67.  
  68. for (int i = 1; i < counts.Length; i++)
  69. {
  70. counts[i] = counts[i] + counts[i - 1];
  71. }
  72.  
  73. for (int i = array.Length - 1; i >= 0; i--)
  74. {
  75. sorted[counts[array[i] - minVal]--] = array[i];
  76. }
  77. return sorted;
  78. }
  79.  
  80. static int[] SelectionSort(int[] array)
  81. {
  82. int i, j, min, tmp;
  83. for (i = 0; i < array.Length; i++)
  84. {
  85. min = i;
  86. for (j = 0; j < array.Length; j++)
  87. {
  88. if (array[j] > array[min])
  89. {
  90. min = j;
  91. tmp = array[j];
  92. array[j] = array[i];
  93. array[i] = tmp;
  94. }
  95. }
  96. }
  97. return array;
  98. }
  99.  
  100. static int[] InsertionSort(int[] array)
  101. {
  102. int j, tmp;
  103. for (int i = 0; i < array.Length; i++)
  104. {
  105. tmp = array[i];
  106. j = i - 1;
  107. while (j >= 0 && array[j] > tmp)
  108. {
  109. array[j + 1] = array[j];
  110. j--;
  111. }
  112. array[j + 1] = tmp;
  113. }
  114. return array;
  115. }
  116.  
  117. static void QuickSort(int[] array, int left, int right)
  118. {
  119. var i = left;
  120. var j = right;
  121. var pivot = array[(left + right) / 2];
  122. while (i < j)
  123. {
  124. while (array[i] < pivot) i++;
  125. while (array[j] > pivot) j--;
  126. if (i <= j)
  127. {
  128. var tmp = array[i];
  129. array[i++] = array[j];
  130. array[j--] = tmp;
  131. }
  132. }
  133. if (left < j) QuickSort(array, left, j);
  134. if (i < right) QuickSort(array, i, right);
  135. }
  136.  
  137. static void Merge(int[] input, int left, int middle, int right)
  138. {
  139. int[] leftArray = new int[middle - left + 1];
  140. int[] rightArray = new int[right - middle];
  141.  
  142. Array.Copy(input, left, leftArray, 0, middle - left + 1);
  143. Array.Copy(input, middle + 1, rightArray, 0, right - middle);
  144.  
  145. int i = 0;
  146. int j = 0;
  147. for (int k = left; k < right + 1; k++)
  148. {
  149. if (i == leftArray.Length)
  150. {
  151. input[k] = rightArray[j];
  152. j++;
  153. }
  154. else if (j == rightArray.Length)
  155. {
  156. input[k] = leftArray[i];
  157. i++;
  158. }
  159. else if (leftArray[i] <= rightArray[j])
  160. {
  161. input[k] = leftArray[i];
  162. i++;
  163. }
  164. else
  165. {
  166. input[k] = rightArray[j];
  167. j++;
  168. }
  169. }
  170. }
  171.  
  172. static void MergeSort(int[] input, int left, int right)
  173. {
  174. if (left < right)
  175. {
  176. int middle = (left + right) / 2;
  177.  
  178. MergeSort(input, left, middle);
  179. MergeSort(input, middle + 1, right);
  180.  
  181. Merge(input, left, middle, right);
  182. }
  183. }
  184. }
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement