Advertisement
Krefeld187

Untitled

Nov 8th, 2020
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 KB | None | 0 0
  1. import java.util.Random;
  2. public class Aufgaben
  3. {
  4. public static void main(String[] args)
  5. {
  6. /**
  7. int Feld_Anzahl_der_Elemente[] = {10_000,20_000,40_000,80_000,160_000};
  8. for(int i = 0; i < Feld_Anzahl_der_Elemente.length; ++i)
  9. {
  10. int laenge = Feld_Anzahl_der_Elemente[i];
  11. int Feld_Quicksort[] = new int [laenge];
  12. int Feld_Insertionsort[] = new int[laenge];
  13. erzeugen(Feld_Insertionsort, 1000);
  14. kopieren(Feld_Insertionsort, Feld_Quicksort); // Das zweite ist das in das kopiert werden soll
  15. insertionsort(Feld_Insertionsort, laenge);
  16. long begin = System.currentTimeMillis();
  17. quicksort(Feld_Quicksort, 0, Feld_Quicksort.length-1);
  18. long end = System.currentTimeMillis();
  19. System.out.println("Quicksort: "+ laenge + " : " + (end-begin) + "ms");
  20. System.out.println();
  21. }
  22. */
  23. int Feld_Quicksort_1Opt[] = new int [10];
  24. erzeugen(Feld_Quicksort_1Opt, 20);
  25.  
  26. // Erste Optimierung Quicksort
  27. ausgeben(Feld_Quicksort_1Opt);
  28. quicksort(Feld_Quicksort_1Opt, 0, Feld_Quicksort_1Opt.length-1,0);
  29. ausgeben(Feld_Quicksort_1Opt);
  30. System.out.println();
  31. }
  32.  
  33. static public void kopieren(int[] feld, int[] feld1)
  34. {
  35. for(int i = 0; i < feld.length; ++i)
  36. {
  37. feld1[i] = feld[i];
  38. }
  39. }
  40.  
  41. static public void erzeugen(int[] feld, int max)
  42. {
  43. Random r = new Random();
  44. for(int i = 0; i < feld.length;++i)
  45. {
  46. feld[i] = r.nextInt(max)+1;
  47. }
  48. }
  49.  
  50. static public void ausgeben(int[] feld)
  51. {
  52. for(int i = 0; i < feld.length;++i)
  53. {
  54. System.out.print(feld[i] + " ");
  55. }
  56. System.out.println();
  57. }
  58.  
  59. static public void insertionsort(int[] feld, int a)
  60. {
  61. long begin = System.currentTimeMillis();
  62. for(int i = 1; i < feld.length;++i)
  63. {
  64. int temp = feld[i];
  65. int j = i-1;
  66. while(j>=0 && feld[j] > temp)
  67. {
  68. feld[j+1] = feld[j];
  69. --j;
  70. }
  71. feld[j+1] = temp;
  72. }
  73. long end = System.currentTimeMillis();
  74. System.out.println("Insertionsort: "+a + " : " + (end-begin) + "ms");
  75. }
  76.  
  77. static void quicksort(int a[], int l, int r)
  78. {
  79. int v, i, j , t;
  80.  
  81. if (r > l)
  82. {
  83. v = a[r];
  84. i = l-1;
  85. j = r;
  86. for (;;)
  87. {
  88. while (a[++i] < v) ;
  89. while (a[--j] > v) ;
  90. if (i >= j)
  91. break;
  92. t = a[i];
  93. a[i] = a[j];
  94. a[j] = t;
  95. }
  96. t = a[i];
  97. a[i] = a[r];
  98. a[r] = t;
  99. quicksort(a, l, i-1);
  100. quicksort(a, i+1, r);
  101. }
  102. }
  103.  
  104. // Erste Optimierung
  105. static void quicksort(int a[], int l, int r, int h)
  106. {
  107. int v, i, j , t;
  108.  
  109. if (r > l)
  110. {
  111. v = pivot_element(a[r], a[l], a[(a.length / 2)]);
  112. i = l-1;
  113. j = r;
  114. for (;;)
  115. {
  116. while (a[++i] < v) ;
  117. while (a[--j] > v) ;
  118. if (i >= j)
  119. break;
  120. t = a[i];
  121. a[i] = a[j];
  122. a[j] = t;
  123. }
  124. t = a[i];
  125. a[i] = a[r];
  126. a[r] = t;
  127. quicksort(a, l, i-1,0);
  128. quicksort(a, i+1, r,0);
  129. }
  130. }
  131.  
  132. static int pivot_element(int a, int b, int c)
  133. {
  134. int temp[] = {a,b,c};
  135. insertionsort(temp);
  136. return temp[1];
  137. }
  138.  
  139. static public void insertionsort(int[] feld)
  140. {
  141. for(int i = 1; i < feld.length;++i)
  142. {
  143. int temp = feld[i];
  144. int j = i-1;
  145. while(j>=0 && feld[j] > temp)
  146. {
  147. feld[j+1] = feld[j];
  148. --j;
  149. }
  150. feld[j+1] = temp;
  151. }
  152. }
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement