Advertisement
Guest User

Untitled

a guest
Feb 27th, 2015
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. package naukadomatury;
  2.  
  3. import java.util.Random;
  4. import java.util.Scanner;
  5.  
  6. public class sortowania {
  7.  
  8. public static void main(String[] args) {
  9. // TODO Auto-generated method stub
  10. Random rand = new Random();
  11. Scanner scan = new Scanner(System.in);
  12. int tab[] = new int[10];
  13. int alg;
  14.  
  15. for (int i = 0; i < 10; i++)
  16. tab[i] = rand.nextInt(100);
  17.  
  18. System.out.println("Tablica przed sortowaniem: ");
  19.  
  20. display(tab);
  21. System.out.println("Wybierz algorytm sortujacy: ");
  22. System.out.println("1 - babelkowe");
  23. System.out.println("2 - wybor");
  24. System.out.println("3 - scalanie");
  25. System.out.println("4 - quicksort");
  26. alg = scan.nextInt();
  27.  
  28. switch (alg) {
  29. case 1:
  30. babelkowe(tab);
  31. break;
  32. case 2:
  33. wybor(tab);
  34. break;
  35. case 3:
  36. tab = scalanie(tab, 0, 9);
  37. break;
  38. case 4:
  39. quicksort(tab, 0, 9);
  40. break;
  41. default:
  42. System.out.println("MISTAKE!");
  43. }
  44.  
  45. display(tab);
  46. scan.close();
  47. }
  48.  
  49. static void display(int tab[]) {
  50. for (int a : tab) {
  51. System.out.print(a + " ");
  52. }
  53. System.out.println("");
  54. }
  55.  
  56. static void babelkowe(int tab[]) {
  57. for (int i = 0; i < tab.length; i++)
  58. for (int j = 0; j < tab.length; j++) {
  59. if (tab[j] > tab[i]) {
  60. int temp = tab[j];
  61. tab[j] = tab[i];
  62. tab[i] = temp;
  63. }
  64.  
  65. }
  66.  
  67. }
  68.  
  69. static int min_index(int tab[], int i) {
  70. int min = tab[i];
  71. int index = i;
  72.  
  73. for (; i < tab.length; i++) {
  74. if (tab[i] < min) {
  75. min = tab[i];
  76. index = i;
  77. }
  78. }
  79. return index;
  80. }
  81.  
  82. static void wybor(int tab[]) {
  83.  
  84. for (int i = 0; i < tab.length; i++) {
  85. int index = min_index(tab, i);
  86. int temp = tab[index];
  87. tab[index] = tab[i];
  88. tab[i] = temp;
  89.  
  90. }
  91. }
  92.  
  93. static int[] scal(int tab[], int tab2[]) {
  94. int tab3[] = new int[tab.length + tab2.length];
  95.  
  96. int indeks1 = 0;
  97. int indeks2 = 0;
  98. int indeks3 = 0;
  99.  
  100. while (indeks1 < tab.length && indeks2 < tab2.length) {
  101. if (tab[indeks1] > tab2[indeks2])
  102. tab3[indeks3++] = tab2[indeks2++];
  103. else
  104. tab3[indeks3++] = tab[indeks1++];
  105. }
  106.  
  107. while (indeks1 < tab.length)
  108. tab3[indeks3++] = tab[indeks1++];
  109.  
  110. while (indeks2 < tab2.length)
  111. tab3[indeks3++] = tab2[indeks2++];
  112.  
  113. return tab3;
  114. }
  115.  
  116. static int[] scalanie(int tab[], int poczatek, int koniec) {
  117. int p = (poczatek + koniec) / 2;
  118. int tabC[];
  119.  
  120. if (koniec - poczatek == 0) {
  121. int temp[] = new int[1];
  122. temp[0] = tab[poczatek];
  123. return temp;
  124. } else
  125. tabC = scal(scalanie(tab, p + 1, koniec),
  126. scalanie(tab, poczatek, p));
  127.  
  128. return tabC;
  129. }
  130.  
  131. static void swap(int tab[], int a, int b)
  132. {
  133. int temp = tab[a];
  134. tab[a] = tab[b];
  135. tab[b] = temp;
  136. }
  137.  
  138. static int podziel(int tab[], int l, int r)
  139. {
  140. int indeksPodzialu = (l+r)/2;
  141. int pivot = tab[indeksPodzialu];
  142. swap(tab, indeksPodzialu, r);
  143.  
  144. for (int i = l; i < r; i++)
  145. {
  146. if (tab[i] < pivot)
  147. {
  148. swap(tab, i, l);
  149. l++;
  150. }
  151. }
  152. swap(tab, l, r);
  153. return l;
  154. }
  155.  
  156. static void quicksort(int tab[], int l, int r)
  157. {
  158. if (l < r)
  159. {
  160. int i = podziel(tab, l, r);
  161. quicksort(tab, l, i-1);
  162. quicksort(tab, i+1, r);
  163. }
  164.  
  165. }
  166.  
  167.  
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement