Ao calcular o tempo de execução do método de ordenação e, posteriormente, converter o tempo de long para int, surge o erro Cannot invoke toString( ) on the primitive type long. Alguém tem ideia do que como possa resolver?
public class MyMergeSort {
void merge(int arr[], int beg, int mid, int end)
{
int l = mid - beg + 1;
int r = end - mid;
int LeftArray[] = new int [l];
int RightArray[] = new int [r];
for (int i=0; i<l; ++i)
LeftArray[i] = arr[beg + i];
for (int j=0; j<r; ++j)
RightArray[j] = arr[mid + 1+ j];
int i = 0, j = 0;
int k = beg;
while (i<l&&j<r) {
if (LeftArray[i] <= RightArray[j]) {
arr[k] = LeftArray[i];
i++;
}
else {
arr[k] = RightArray[j];
j++;
}
k++;
}
while (i<l) {
arr[k] = LeftArray[i];
i++;
k++;
}
while (j<r) {
arr[k] = RightArray[j];
j++;
k++;
}
}
public int sort(int arr[], int beg, int end) {
if (beg<end) {
long start = System.currentTimeMillis();
int mid = (beg+end)/2;
sort(arr, beg, mid);
sort(arr , mid+1, end);
merge(arr, beg, mid, end);
long ended = System.currentTimeMillis();
long all = ended-start;
Integer all1 = 0;
try{
all1 = Integer.valueOf(all.toString());
}
catch (Exception e) {
System.out.println("Capacidade do Integer estourou.");
}
return all1;
}
}
public static void main(String args[]) {
int size = 10;
int arr[] = new int[size];
for(int i=0; i<arr.length; i++) {
arr[i] = (int)(1+Math.random()*size);
}
MyMergeSort ob = new MyMergeSort();
ob.sort(arr, 0, arr.length-1);
System.out.println("\nSorted ");
for(int i =0; i<arr.length;i++) {
System.out.println(arr[i]+"");
}
}
}