Advertisement
Krefeld187

Untitled

Dec 13th, 2020
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.00 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. System.out.println("Quicksort RLM");
  63. quicksort_rechtsLinksMitteMedian_Pivot(arr3,0,arr3.length - 1);
  64. ausgeben(arr3);
  65.  
  66. }
  67.  
  68. static public void kopieren(int[] feld, int[] feld1, int[] feld2, int [] feld3, int [] feld4)
  69. {
  70. for(int i = 0; i < feld.length; ++i)
  71. {
  72. feld1[i] = feld[i];
  73. feld2[i] = feld[i];
  74. feld3[i] = feld[i];
  75. feld4[i] = feld[i];
  76. }
  77. }
  78.  
  79. static public void kopieren(String[] arr, String[] arr1, String[] arr2, String[] arr3)
  80. {
  81. for(int i = 0; i < arr.length; ++i)
  82. {
  83. arr1[i] = arr[i];
  84. arr2[i] = arr[i];
  85. arr3[i] = arr[i];
  86. }
  87. }
  88.  
  89. static public void erzeugen(int[] feld, int max)
  90. {
  91. Random r = new Random();
  92. for(int i = 0; i < feld.length;++i)
  93. {
  94. feld[i] = r.nextInt(max)+1;
  95. }
  96. }
  97.  
  98. static public void ausgeben(int[] feld)
  99. {
  100. for(int i = 0; i < feld.length;++i)
  101. {
  102. System.out.print(feld[i] + " ");
  103. }
  104. System.out.println();
  105. }
  106.  
  107. static void quicksort_rechts_Pivot(int a[], int l, int r)
  108. {
  109. int v, i, j , t;
  110.  
  111. if (r > l)
  112. {
  113. v = a[r];
  114. i = l-1;
  115. j = r;
  116. for (;;)
  117. {
  118. while (a[++i] < v) ;
  119. while (j > 0 && a[--j] > v) ;
  120. if (i >= j)
  121. break;
  122. t = a[i];
  123. a[i] = a[j];
  124. a[j] = t;
  125. }
  126. t = a[i];
  127. a[i] = a[r];
  128. a[r] = t;
  129. quicksort_rechts_Pivot(a, l, i-1);
  130. quicksort_rechts_Pivot(a, i+1, r);
  131. }
  132. }
  133.  
  134. static void quicksort_Links_Pivot(int a[], int l, int r)
  135. {
  136. int v, i, j , t;
  137.  
  138. if (r > l)
  139. {
  140. v = a[l];
  141. i = l;
  142. j = r+1;
  143. for (;;)
  144. {
  145. while (i < a.length-1 && a[++i] < v) ;
  146. while (a[--j] > v) ;
  147. if (i >= j)
  148. break;
  149. t = a[i];
  150. a[i] = a[j];
  151. a[j] = t;
  152. }
  153. t = a[j];
  154. a[j] = a[l];
  155. a[l] = t;
  156. quicksort_Links_Pivot(a, l, j-1);
  157. quicksort_Links_Pivot(a, j+1, r);
  158. }
  159. }
  160.  
  161.  
  162. static void quicksort_mitte(int []a, int l ,int r)
  163. {
  164. int v, i, j , t;
  165.  
  166. if (r > l)
  167. {
  168. int temp = a[((r+1)-l)/2];
  169. t = temp;
  170. temp = a[r];
  171. a[r] = temp;
  172.  
  173. v = a[r];
  174. i = l-1;
  175. j = r;
  176. for (;;)
  177. {
  178. while (a[++i] < v) ;
  179. while (j > 0 && a[--j] > v) ;
  180. if (i >= j)
  181. break;
  182. t = a[i];
  183. a[i] = a[j];
  184. a[j] = t;
  185. }
  186. t = a[i];
  187. a[i] = a[r];
  188. a[r] = t;
  189. quicksort_mitte(a, l, i-1);
  190. quicksort_mitte(a, i+1, r);
  191. }
  192. }
  193.  
  194. static void quicksort_rechtsLinksMitteMedian_Pivot(int a[], int l, int r)
  195. {
  196. int v, i, j , t;
  197.  
  198. if (r > l)
  199. {
  200. int temp = median(a[l], a[r], a[((r+1)-l)/2]);
  201. if(temp == a[l])
  202. {
  203. t = a[l];
  204. a[l] = a[r];
  205. a[r] = t;
  206.  
  207. }
  208.  
  209. if(temp == a[((r+1)-l)/2])
  210. {
  211. t = a[((r+1)-l)/2];
  212. a[((r+1)-l)/2] = a[r];
  213. a[r] = t;
  214.  
  215. }
  216.  
  217. v = a[r];
  218. i = l-1;
  219. j = r;
  220. for (;;)
  221. {
  222. while (a[++i] < v) ;
  223. while (j > 0 && a[--j] > v) ;
  224. if (i >= j)
  225. break;
  226. t = a[i];
  227. a[i] = a[j];
  228. a[j] = t;
  229. }
  230. t = a[i];
  231. a[i] = a[r];
  232. a[r] = t;
  233. quicksort_rechtsLinksMitteMedian_Pivot(a, l, i-1);
  234. quicksort_rechtsLinksMitteMedian_Pivot(a, i+1, r);
  235. }
  236. }
  237.  
  238. public static int median(int x, int y, int z)
  239. {
  240. return x < y ? y < z ? y : x < z ? z : x : y < z ? x < z ? x : z : y;
  241. }
  242.  
  243. //String Methoden
  244.  
  245. static String allowedChars ="0123456789abcdefghijklmnopqrstuvwxyz";
  246.  
  247. private static String generateRandomString(String allowedChars, Random random, int laenge)
  248. {
  249. int max = allowedChars.length();
  250. StringBuffer buffer = new StringBuffer();
  251. for (int i=0; i<laenge; i++)
  252. {
  253. int value = random.nextInt(max);
  254. buffer.append(allowedChars.charAt(value));
  255. }
  256. return buffer.toString();
  257. }
  258.  
  259. static public void erzeugen(int stringlaenge,String[] arr)
  260. {
  261. Random random = new Random();
  262. for (int i=0; i<arr.length; i++)
  263. {
  264. arr[i] = generateRandomString(allowedChars, random, stringlaenge);
  265. }
  266. }
  267.  
  268. static public void ausgeben(String[] arr)
  269. {
  270. for(int i = 0; i < arr.length;++i)
  271. {
  272. System.out.print(arr[i] + " ");
  273. }
  274. System.out.println();
  275. }
  276.  
  277. static void quicksort_rechts_Pivot(String a[], int l, int r)
  278. {
  279. String v, t;
  280. int i, j ;
  281.  
  282. if (r > l)
  283. {
  284. v = a[r];
  285. i = l-1;
  286. j = r;
  287. for (;;)
  288. {
  289. while (a[++i].compareTo(v) < 0) ;
  290. while (j > 0 && a[--j].compareTo(v) > 0) ;
  291. if (i >= j)
  292. break;
  293. t = a[i];
  294. a[i] = a[j];
  295. a[j] = t;
  296. }
  297. t = a[i];
  298. a[i] = a[r];
  299. a[r] = t;
  300. quicksort_rechts_Pivot(a, l, i-1);
  301. quicksort_rechts_Pivot(a, i+1, r);
  302. }
  303. }
  304.  
  305. static void quicksort_Links_Pivot(String a[], int l, int r)
  306. {
  307. String v, t;
  308. int i, j ;
  309.  
  310. if (r > l)
  311. {
  312.  
  313. t = a[l];
  314. a[l] = a[r];
  315. a[r] = t;
  316.  
  317. v = a[r];
  318. i = l-1;
  319. j = r;
  320. for (;;)
  321. {
  322. while (a[++i].compareTo(v) < 0) ;
  323. while (j > 0 && a[--j].compareTo(v) > 0) ;
  324. if (i >= j)
  325. break;
  326. t = a[i];
  327. a[i] = a[j];
  328. a[j] = t;
  329. }
  330. t = a[i];
  331. a[i] = a[r];
  332. a[r] = t;
  333. quicksort_Links_Pivot(a, l, i-1);
  334. quicksort_Links_Pivot(a, i+1, r);
  335. }
  336. }
  337.  
  338.  
  339. static void quicksort_mitte(String []a, int l ,int r)
  340. {
  341. String v, t;
  342. int i, j ;
  343.  
  344. if (r > l)
  345. {
  346. String temp = a[((r+1)-l)/2];
  347. t = temp;
  348. temp = a[r];
  349. a[r] = temp;
  350.  
  351. v = a[r];
  352. i = l-1;
  353. j = r;
  354. for (;;)
  355. {
  356. while (a[++i].compareTo(v) < 0) ;
  357. while (j > 0 && a[--j].compareTo(v) > 0) ;
  358. if (i >= j)
  359. break;
  360. t = a[i];
  361. a[i] = a[j];
  362. a[j] = t;
  363. }
  364. t = a[i];
  365. a[i] = a[r];
  366. a[r] = t;
  367. quicksort_mitte(a, l, i-1);
  368. quicksort_mitte(a, i+1, r);
  369. }
  370. }
  371.  
  372. static void quicksort_rechtsLinksMitteMedian_Pivot(String a[], int l, int r)
  373. {
  374. String v, t;
  375. int i, j ;
  376.  
  377. if (r > l)
  378. {
  379. String temp = median(a[l], a[r], a[((r+1)-l)/2]);
  380. if(temp.equals(a[l]))
  381. {
  382. t = a[l];
  383. a[l] = a[r];
  384. a[r] = t;
  385.  
  386. }
  387.  
  388. if(temp.equals(a[((r+1)-l)/2]))
  389. {
  390. t = a[((r+1)-l)/2];
  391. a[((r+1)-l)/2] = a[r];
  392. a[r] = t;
  393.  
  394. }
  395.  
  396. v = a[r];
  397. i = l-1;
  398. j = r;
  399. for (;;)
  400. {
  401. while (a[++i].compareTo(v) < 0) ;
  402. while (j > 0 && a[--j].compareTo(v) > 0) ;
  403. if (i >= j)
  404. break;
  405. t = a[i];
  406. a[i] = a[j];
  407. a[j] = t;
  408. }
  409. t = a[i];
  410. a[i] = a[r];
  411. a[r] = t;
  412. quicksort_rechtsLinksMitteMedian_Pivot(a, l, i-1);
  413. quicksort_rechtsLinksMitteMedian_Pivot(a, i+1, r);
  414. }
  415. }
  416.  
  417. public static String median(String x, String y, String z)
  418. {
  419. return x.compareTo(y) < 0 ? y.compareTo(z) < 0 ? y : x.compareTo(z) < 0 ? z : x : y.compareTo(z) < 0 ? x.compareTo(z) < 0 ? x : z : y;
  420. }
  421. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement