Krefeld187

Untitled

Dec 13th, 2020
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.89 KB | None | 0 0
  1. import java.util.Random;
  2.  
  3. public class sortieren {
  4.  
  5. public static void main(String[] args)
  6. {
  7. int length = 10;
  8. int field[] = new int [length];
  9. int field1[] = new int[length];
  10. int field2[] = new int[length];
  11. int field3[] = new int[length];
  12. int field4[] = new int[length];
  13.  
  14. String arr [] = new String[length];
  15. String arr1 [] = new String[length];
  16. String arr2 [] = new String[length];
  17. String arr3 [] = new String[length];
  18.  
  19. //Int
  20.  
  21. erzeugen(field, 50);
  22. kopieren(field, field1, field2, field3, field4);
  23. ausgeben(field);
  24.  
  25. System.out.println("Quicksort R");
  26. quicksort_rechts_Pivot(field,0,field.length - 1);
  27. ausgeben(field);
  28.  
  29. System.out.println("Quicksort L");
  30. quicksort_Links_Pivot(field1,0,field1.length - 1);
  31. ausgeben(field1);
  32.  
  33. System.out.println("Quicksort M");
  34. quicksort_mitte(field2,0,field2.length - 1);
  35. ausgeben(field2);
  36.  
  37. System.out.println("Quicksort RLM");
  38. quicksort_rechtsLinksMitteMedian_Pivot(field3,0,field3.length - 1);
  39. ausgeben(field3);
  40.  
  41. System.out.println();
  42. System.out.println("String");
  43. System.out.println();
  44.  
  45. //String
  46. erzeugen(5,arr);
  47. kopieren(arr, arr1, arr2, arr3);
  48. ausgeben(arr);
  49.  
  50. System.out.println("Quicksort R");
  51. quicksort_rechts_Pivot(arr,0,arr.length - 1);
  52. ausgeben(arr);
  53.  
  54. System.out.println("Quicksort L");
  55. quicksort_Links_Pivot(arr1,0,arr1.length - 1);
  56. ausgeben(arr1);
  57.  
  58. System.out.println("Quicksort M");
  59. quicksort_mitte(arr2,0,arr2.length - 1);
  60. ausgeben(arr2);
  61.  
  62. }
  63.  
  64. static public void kopieren(int[] feld, int[] feld1, int[] feld2, int [] feld3, int [] feld4)
  65. {
  66. for(int i = 0; i < feld.length; ++i)
  67. {
  68. feld1[i] = feld[i];
  69. feld2[i] = feld[i];
  70. feld3[i] = feld[i];
  71. feld4[i] = feld[i];
  72. }
  73. }
  74.  
  75. static public void kopieren(String[] arr, String[] arr1, String[] arr2, String[] arr3)
  76. {
  77. for(int i = 0; i < arr.length; ++i)
  78. {
  79. arr1[i] = arr[i];
  80. arr2[i] = arr[i];
  81. arr3[i] = arr[i];
  82. }
  83. }
  84.  
  85. static public void erzeugen(int[] feld, int max)
  86. {
  87. Random r = new Random();
  88. for(int i = 0; i < feld.length;++i)
  89. {
  90. feld[i] = r.nextInt(max)+1;
  91. }
  92. }
  93.  
  94. static public void ausgeben(int[] feld)
  95. {
  96. for(int i = 0; i < feld.length;++i)
  97. {
  98. System.out.print(feld[i] + " ");
  99. }
  100. System.out.println();
  101. }
  102.  
  103. static void quicksort_rechts_Pivot(int a[], int l, int r)
  104. {
  105. int v, i, j , t;
  106.  
  107. if (r > l)
  108. {
  109. v = a[r];
  110. i = l-1;
  111. j = r;
  112. for (;;)
  113. {
  114. while (a[++i] < v) ;
  115. while (j > 0 && a[--j] > v) ;
  116. if (i >= j)
  117. break;
  118. t = a[i];
  119. a[i] = a[j];
  120. a[j] = t;
  121. }
  122. t = a[i];
  123. a[i] = a[r];
  124. a[r] = t;
  125. quicksort_rechts_Pivot(a, l, i-1);
  126. quicksort_rechts_Pivot(a, i+1, r);
  127. }
  128. }
  129.  
  130. static void quicksort_Links_Pivot(int a[], int l, int r)
  131. {
  132. int v, i, j , t;
  133.  
  134. if (r > l)
  135. {
  136. v = a[l];
  137. i = l;
  138. j = r+1;
  139. for (;;)
  140. {
  141. while (i < a.length-1 && a[++i] < v) ;
  142. while (a[--j] > v) ;
  143. if (i >= j)
  144. break;
  145. t = a[i];
  146. a[i] = a[j];
  147. a[j] = t;
  148. }
  149. t = a[j];
  150. a[j] = a[l];
  151. a[l] = t;
  152. quicksort_Links_Pivot(a, l, j-1);
  153. quicksort_Links_Pivot(a, j+1, r);
  154. }
  155. }
  156.  
  157.  
  158. static void quicksort_mitte(int []a, int l ,int r)
  159. {
  160. int v, i, j , t;
  161.  
  162. if (r > l)
  163. {
  164. int temp = a[((r+1)-l)/2];
  165. t = temp;
  166. temp = a[r];
  167. a[r] = temp;
  168.  
  169. v = a[r];
  170. i = l-1;
  171. j = r;
  172. for (;;)
  173. {
  174. while (a[++i] < v) ;
  175. while (j > 0 && a[--j] > v) ;
  176. if (i >= j)
  177. break;
  178. t = a[i];
  179. a[i] = a[j];
  180. a[j] = t;
  181. }
  182. t = a[i];
  183. a[i] = a[r];
  184. a[r] = t;
  185. quicksort_mitte(a, l, i-1);
  186. quicksort_mitte(a, i+1, r);
  187. }
  188. }
  189.  
  190. static void quicksort_rechtsLinksMitteMedian_Pivot(int a[], int l, int r)
  191. {
  192. int v, i, j , t;
  193.  
  194. if (r > l)
  195. {
  196. int temp = median(a[l], a[r], a[((r+1)-l)/2]);
  197. if(temp == a[l])
  198. {
  199. t = a[l];
  200. a[l] = a[r];
  201. a[r] = t;
  202.  
  203. }
  204.  
  205. if(temp == a[((r+1)-l)/2])
  206. {
  207. t = a[((r+1)-l)/2];
  208. a[((r+1)-l)/2] = a[r];
  209. a[r] = t;
  210.  
  211. }
  212.  
  213. v = a[r];
  214. i = l-1;
  215. j = r;
  216. for (;;)
  217. {
  218. while (a[++i] < v) ;
  219. while (j > 0 && a[--j] > v) ;
  220. if (i >= j)
  221. break;
  222. t = a[i];
  223. a[i] = a[j];
  224. a[j] = t;
  225. }
  226. t = a[i];
  227. a[i] = a[r];
  228. a[r] = t;
  229. quicksort_rechtsLinksMitteMedian_Pivot(a, l, i-1);
  230. quicksort_rechtsLinksMitteMedian_Pivot(a, i+1, r);
  231. }
  232. }
  233.  
  234. public static int median(int x, int y, int z)
  235. {
  236. return x < y ? y < z ? y : x < z ? z : x : y < z ? x < z ? x : z : y;
  237. }
  238.  
  239. //String Methoden
  240.  
  241. static String allowedChars ="0123456789abcdefghijklmnopqrstuvwxyz";
  242.  
  243. private static String generateRandomString(String allowedChars, Random random, int laenge)
  244. {
  245. int max = allowedChars.length();
  246. StringBuffer buffer = new StringBuffer();
  247. for (int i=0; i<laenge; i++)
  248. {
  249. int value = random.nextInt(max);
  250. buffer.append(allowedChars.charAt(value));
  251. }
  252. return buffer.toString();
  253. }
  254.  
  255. static public void erzeugen(int stringlaenge,String[] arr)
  256. {
  257. Random random = new Random();
  258. for (int i=0; i<arr.length; i++)
  259. {
  260. arr[i] = generateRandomString(allowedChars, random, stringlaenge);
  261. }
  262. }
  263.  
  264. static public void ausgeben(String[] arr)
  265. {
  266. for(int i = 0; i < arr.length;++i)
  267. {
  268. System.out.print(arr[i] + " ");
  269. }
  270. System.out.println();
  271. }
  272.  
  273. static void quicksort_rechts_Pivot(String a[], int l, int r)
  274. {
  275. String v, t;
  276. int i, j ;
  277.  
  278. if (r > l)
  279. {
  280. v = a[r];
  281. i = l-1;
  282. j = r;
  283. for (;;)
  284. {
  285. while (a[++i].compareTo(v) < 0) ;
  286. while (j > 0 && a[--j].compareTo(v) > 0) ;
  287. if (i >= j)
  288. break;
  289. t = a[i];
  290. a[i] = a[j];
  291. a[j] = t;
  292. }
  293. t = a[i];
  294. a[i] = a[r];
  295. a[r] = t;
  296. quicksort_rechts_Pivot(a, l, i-1);
  297. quicksort_rechts_Pivot(a, i+1, r);
  298. }
  299. }
  300.  
  301. static void quicksort_Links_Pivot(String a[], int l, int r)
  302. {
  303. String v, t;
  304. int i, j ;
  305.  
  306. if (r > l)
  307. {
  308.  
  309. t = a[l];
  310. a[l] = a[r];
  311. a[r] = t;
  312.  
  313. v = a[r];
  314. i = l-1;
  315. j = r;
  316. for (;;)
  317. {
  318. while (a[++i].compareTo(v) < 0) ;
  319. while (j > 0 && a[--j].compareTo(v) > 0) ;
  320. if (i >= j)
  321. break;
  322. t = a[i];
  323. a[i] = a[j];
  324. a[j] = t;
  325. }
  326. t = a[i];
  327. a[i] = a[r];
  328. a[r] = t;
  329. quicksort_Links_Pivot(a, l, i-1);
  330. quicksort_Links_Pivot(a, i+1, r);
  331. }
  332. }
  333.  
  334.  
  335. static void quicksort_mitte(String []a, int l ,int r)
  336. {
  337. String v, t;
  338. int i, j ;
  339.  
  340. if (r > l)
  341. {
  342. String temp = a[((r+1)-l)/2];
  343. t = temp;
  344. temp = a[r];
  345. a[r] = temp;
  346.  
  347. v = a[r];
  348. i = l-1;
  349. j = r;
  350. for (;;)
  351. {
  352. while (a[++i].compareTo(v) < 0) ;
  353. while (j > 0 && a[--j].compareTo(v) > 0) ;
  354. if (i >= j)
  355. break;
  356. t = a[i];
  357. a[i] = a[j];
  358. a[j] = t;
  359. }
  360. t = a[i];
  361. a[i] = a[r];
  362. a[r] = t;
  363. quicksort_mitte(a, l, i-1);
  364. quicksort_mitte(a, i+1, r);
  365. }
  366. }
  367. }
Add Comment
Please, Sign In to add comment