Guest User

Untitled

a guest
Oct 20th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. import java.util.Arrays;
  2.  
  3. public class MergeSort {
  4.  
  5. public static void main(String[] args) {
  6. int[] a2 = {5,2,4,6,1,3,2,6};
  7. sort(a2);
  8. System.out.println(Arrays.toString(a2));
  9. }
  10.  
  11. private static void sort(int[] a) {
  12. int[] aux = new int[a.length];
  13. sort(a, aux, 0, a.length - 1);
  14. }
  15.  
  16. private static void sort(int[] a, int[] aux, int lo, int hi) {
  17. if (hi <= lo) {
  18. return;
  19. }
  20. int mid = lo + (hi - lo) / 2;
  21. sort(a, aux, lo, mid);
  22. sort(a, aux, mid + 1, hi);
  23. merge(a, aux, lo, hi, mid);
  24. }
  25.  
  26. private static void merge(int[] a, int[] aux, int lo, int hi, int mid) {
  27. /*
  28. aux - вспомогательный массив
  29. а - начальный массив
  30. */
  31.  
  32. System.arraycopy(a, lo, aux, lo, hi + 1 - lo);
  33.  
  34. // расставляем переменные i j
  35. int i = lo;
  36. int j = mid + 1;
  37.  
  38. //цикл от lo - hi
  39. for (int k = lo; k <= hi; k++) {
  40. if (i > mid) a[k] = aux[j++];
  41. else if (j > hi) a[k] = aux[i++];
  42. else if (Integer.compare(aux[j], (aux[i])) < 0) a[k] = aux[j++];
  43. else {
  44. a[k] = aux[i++];
  45. }
  46. }
  47. }
  48. }
Add Comment
Please, Sign In to add comment