Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void Sort() {
- int sizeA; //size of array a
- int sizeB; //size of array a
- int[] merged; //array holding merged arrays
- ArrayList<Integer> temp1 = new ArrayList<>();
- ArrayList<Integer> temp2 = new ArrayList<>();
- // 4 2 3 1 5
- for (int i = 2; i <= UN.length; i *= 2) { //loop counting size of compared values
- for (int j = 0; j < UN.length; j += i) { //loop jumping one "size" at a time through the array
- temp1.clear();
- temp2.clear();
- if (j + i > UN.length) { //trying to solve the not 2^n
- for (int k = j; k < UN.length; k++){
- if (k < i / 2 + j) {
- temp1.add(UN[k]);
- } else if (k < UN.length) {
- temp2.add(UN[k]);
- }
- }
- } else {
- for (int k = j; k < i + j; k++) {
- if (k < i / 2 + j) {
- temp1.add(UN[k]);
- } else {
- temp2.add(UN[k]);
- }
- }
- }
- Integer[] a = temp1.toArray(new Integer[temp1.size()]);
- Integer[] b = temp2.toArray(new Integer[temp2.size()]);
- sizeA = a.length;
- sizeB = b.length;
- merged = new int[sizeA + sizeB];
- int x = 0, y = 0, z = 0;
- while (x < a.length && y < b.length) {
- if (a[x] < b[y]) {
- merged[z] = a[x];
- x++;
- } else {
- merged[z] = b[y];
- y++;
- }
- z++;
- }
- while (x < a.length) {
- merged[z] = a[x];
- x++;
- z++;
- }
- while (y < b.length) {
- merged[z] = b[y];
- y++;
- z++;
- }
- int m = 0;
- for (int l = j; l < i; l++) {
- UN[l] = merged[m++];
- }
- }
- }
- SN = new int[UN.length];
- SN = UN;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement