Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.47 KB | None | 0 0
  1. public void Sort() {
  2.        
  3.         int sizeA; //size of array a
  4.         int sizeB; //size of array a
  5.         int[] merged; //array holding merged arrays
  6.         ArrayList<Integer> temp1 = new ArrayList<>();
  7.         ArrayList<Integer> temp2 = new ArrayList<>();
  8.         // 4 2 3 1 5
  9.                                                        
  10.         for (int i = 2; i <= UN.length; i *= 2) {       //loop counting size of compared values
  11.             for (int j = 0; j < UN.length; j += i) {    //loop jumping one "size" at a time through the array
  12.                 temp1.clear();
  13.                 temp2.clear();
  14.                 if (j + i > UN.length) {                //trying to solve the not 2^n
  15.                     for (int k = j; k < UN.length; k++){
  16.                         if (k < i / 2 + j) {
  17.                             temp1.add(UN[k]);
  18.                         } else if (k < UN.length) {
  19.                             temp2.add(UN[k]);
  20.                         }
  21.                     }
  22.                 } else {
  23.                     for (int k = j; k < i + j; k++) {
  24.                         if (k < i / 2 + j) {
  25.                             temp1.add(UN[k]);
  26.                         } else {
  27.                             temp2.add(UN[k]);
  28.                         }
  29.                     }
  30.                 }
  31.                 Integer[] a = temp1.toArray(new Integer[temp1.size()]);
  32.                 Integer[] b = temp2.toArray(new Integer[temp2.size()]);
  33.                 sizeA = a.length;
  34.                 sizeB = b.length;
  35.                 merged = new int[sizeA + sizeB];
  36.                 int x = 0, y = 0, z = 0;
  37.                 while (x < a.length && y < b.length) {
  38.                     if (a[x] < b[y]) {
  39.                         merged[z] = a[x];
  40.                         x++;
  41.                     } else {
  42.                         merged[z] = b[y];
  43.                         y++;
  44.                     }
  45.                     z++;
  46.                 }
  47.                 while (x < a.length) {
  48.                     merged[z] = a[x];
  49.                     x++;
  50.                     z++;
  51.                 }
  52.  
  53.                 while (y < b.length) {
  54.                     merged[z] = b[y];
  55.                     y++;
  56.                     z++;
  57.                 }
  58.                
  59.                 int m = 0;
  60.                 for (int l = j; l < i; l++) {
  61.                     UN[l] = merged[m++];
  62.                 }
  63.             }
  64.         }
  65.         SN = new int[UN.length];
  66.         SN = UN;
  67.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement