I coded a method to find me the median in an Array I know nothing about, besides it's carrying doubles. It's also working, but as I don't know how big it might be, I wonder if what I'm doing is efficient. Should I check the Array if it's unsorted instead of directly sorting it? Or would that be an unneccessary step to do if I'm going to sort it anyway? Is the way I sort it recommended or are there better ways I'm missing out on?
//I calculate the median and return it.
public static double median(double[] vals) { //(un-)sorted Array
double median = 0;
sortedVals = Arrays.stream(vals).sorted().toArray(); //sorts low to high
int middleOfArray = (sortedVals.length) / 2 - 1;
int secondMiddleOfUnevenArray = (sortedVals.length) / 2;
if(sortedVals.length % 2 == 1) { //uneven values in Array
median = sortedVals[middleOfArray] + 1;
} else if(sortedVals.length % 2 == 0) { //even values in Array
median = (sortedVals[middleOfArray] + sortedVals[secondMiddleOfUnevenArray]) / 2;
} else {
System.out.println("Method median: error");
}
return median;
}