Здесь:
public static double[] QuickSortAlgo(double arr[],int low, int high){
Ваш метод QuickSortAlgo()
(который лучше назвать, например, runQuicksort()
) получает ссылку , указывающую на массив двойных значений.
Затем он передает эту ссылку:
int pi=partition(arr,low,high);
Это означает, что оба метода «видят» один и тот же объект в памяти (этот массив двойных чисел). В памяти есть только одна вещь, и возвращаемый тип partition()
не имеет к этому никакого отношения.
Итак, если partition()
сначала не создаст массив NEW и не скопирует содержимое из переданного ему массива, он просто будет работать в той же области памяти, на которую "смотрит" метод сортировки.
Кроме того, вы, вероятно, захотите узнать о передаче по значению для ссылок Java .