gpt4 book ai didi

java - 为什么下面的QuickSortAlgo方法中使用的是修改后的double[]变量 'arr'而不是我们最初输入的arr[]?

转载 作者:行者123 更新时间:2023-12-02 10:07:16 27 4
gpt4 key购买 nike

我是编程新手,我试图在 java 上实现快速排序。我的代码似乎运行良好。但有一些我无法理解的静态方法称为“partition”(正如您在下面的代码片段中看到的)返回一个“int”类型变量并操作数组“arr”。现在,当我使用输入为“arr”调用 QuickSortAlgo 方法时,为什么 QuickSortAlgo 方法内部的这个“arr”数组是被操作/修改的数组(在“partition”方法中修改)?当方法'partition'结束时,数组'arr'(在分区中修改的)不应该被忘记,因为方法'partition'只返回一个'int'?

public static double[] QuickSortAlgo(double arr[],int low, int high){
if(low<high){
int pi=partition(arr,low,high);
QuickSortAlgo(arr, low, pi-1); // Before pi
QuickSortAlgo(arr, pi+1, high); // After pi
}

最佳答案

这里:

public static double[] QuickSortAlgo(double arr[],int low, int high){

您的方法 QuickSortAlgo() (例如,最好将其命名为 runQuicksort())接收一个指向 double 数组的引用值。

然后它会传递该引用:

int pi=partition(arr,low,high);

这意味着:两种方法“看到”内存中完全相同的对象(即 double 数组)。内存中只有一件事,partition() 的返回类型与此无关。

因此,除非 partition() 首先创建一个新数组并复制传递给它的数组中的内容,否则它只是在与该数组完全相同的内存区域上工作。排序方法是“看着”。

除此之外,您可能还想了解 pass by value for java references .

关于java - 为什么下面的QuickSortAlgo方法中使用的是修改后的double[]变量 'arr'而不是我们最初输入的arr[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55262050/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com