super();\r
}\r
\r
- public void serializedSort(int A[], int B[]){\r
+ public void serializedSort(int A[]) {\r
\r
if (A.length <= QUICK_SIZE) {\r
- quickSort(A,0,A.length-1);\r
+ quickSort(A, 0, A.length - 1);\r
} else {\r
\r
int q = A.length / 4;\r
A_quarters3[i - idxs[2]] = A[i];\r
}\r
\r
- int[] B_quarters0 = new int[size0];\r
- int[] B_quarters1 = new int[size1];\r
- int[] B_quarters2 = new int[size2];\r
- int[] B_quarters3 = new int[size3];\r
+ int h1 = A_quarters0.length + A_quarters1.length;\r
+ int h2 = A_quarters2.length + A_quarters3.length;\r
+ int[] B_halves0 = new int[h1];\r
+ int[] B_halves1 = new int[h2];\r
\r
- for (int i = 0; i < idxs[0]; i++) {\r
- B_quarters0[i] = B[i];\r
- }\r
- for (int i = idxs[0]; i < idxs[1]; i++) {\r
- B_quarters1[i - idxs[0]] = B[i];\r
- }\r
- for (int i = idxs[1]; i < idxs[2]; i++) {\r
- B_quarters2[i - idxs[1]] = B[i];\r
- }\r
- for (int i = idxs[2]; i < B.length; i++) {\r
- B_quarters3[i - idxs[2]] = B[i];\r
- }\r
-\r
- int halfSize = B.length - (2 * q);\r
- int[] B_halves0 = new int[halfSize];\r
- int[] B_halves1 = new int[halfSize];\r
+ serializedSort(A_quarters0);\r
+ serializedSort(A_quarters1);\r
+ serializedSort(A_quarters2);\r
+ serializedSort(A_quarters3);\r
\r
- sort(A_quarters0, B_quarters0);\r
- sort(A_quarters1, B_quarters1);\r
- sort(A_quarters2, B_quarters2);\r
- sort(A_quarters3, B_quarters3);\r
+ sequentialMerge(A_quarters0, A_quarters1, B_halves0);\r
+ sequentialMerge(A_quarters2, A_quarters3, B_halves1);\r
+ sequentialMerge(B_halves0, B_halves1, A);\r
\r
- merge(A_quarters0, A_quarters1, B_halves0);\r
- merge(A_quarters2, A_quarters3, B_halves1);\r
- merge(B_halves0, B_halves1, A);\r
- \r
}\r
- \r
+\r
}\r
\r
- public void sort(int A[], int B[]) {\r
+ public void sort(int A[]) {\r
\r
if(A.length<=SERIALIZED_CUT_OFF){\r
- serializedSort(A, B);\r
+ serializedSort(A);\r
}else{\r
if (A.length <= QUICK_SIZE) {\r
quickSort(A,0,A.length-1);\r
for (int i = idxs[2]; i < A.length; i++) {\r
A_quarters3[i - idxs[2]] = A[i];\r
}\r
- \r
- int[] B_quarters0 = new int[size0];\r
- int[] B_quarters1 = new int[size1];\r
- int[] B_quarters2 = new int[size2];\r
- int[] B_quarters3 = new int[size3];\r
- \r
- for (int i = 0; i < idxs[0]; i++) {\r
- B_quarters0[i] = B[i];\r
- }\r
- for (int i = idxs[0]; i < idxs[1]; i++) {\r
- B_quarters1[i - idxs[0]] = B[i];\r
- }\r
- for (int i = idxs[1]; i < idxs[2]; i++) {\r
- B_quarters2[i - idxs[1]] = B[i];\r
- }\r
- for (int i = idxs[2]; i < B.length; i++) {\r
- B_quarters3[i - idxs[2]] = B[i];\r
- }\r
- \r
- int halfSize = B.length - (2 * q);\r
- int[] B_halves0 = new int[halfSize];\r
- int[] B_halves1 = new int[halfSize];\r
+\r
+ int h1 = A_quarters0.length+A_quarters1.length;\r
+ int h2 = A_quarters2.length+A_quarters3.length;\r
+ int[] B_halves0 = new int[h1];\r
+ int[] B_halves1 = new int[h2];\r
\r
sese p1{\r
- sort(A_quarters0, B_quarters0);\r
+ sort(A_quarters0);\r
}\r
sese p2{\r
- sort(A_quarters1, B_quarters1);\r
+ sort(A_quarters1);\r
}\r
sese p3{\r
- sort(A_quarters2, B_quarters2);\r
+ sort(A_quarters2);\r
}\r
sese p4{\r
- sort(A_quarters3, B_quarters3);\r
+ sort(A_quarters3);\r
}\r
\r
sese m1{\r
sese m3{\r
merge(B_halves0, B_halves1, A);\r
}\r
- \r
}\r
}\r
}\r