gpt4 book ai didi

java - 通过创建一种方法来简化 Java 代码……但是在哪里?

转载 作者:行者123 更新时间:2023-12-01 13:13:20 24 4
gpt4 key购买 nike

我正在尝试编写一些在作业中给出的伪代码 - 但是我现在正在做的编码部分不是作业的一部分,只是为了好玩。

伪代码的一部分说“交换数组的元素”。在我的代码中,我必须在两个地方执行此操作。但是我想知道是否有一种方法可以通过只创建一个方法来做到这一点,即创建另一个方法来简单地交换它们并保存我每次想要运行它时使用的额外代码行。

问题是,如果我在这个方法之外创建一个全新的方法,我将不得不将数组作为参数传入并取出,恐怕效率会降低(显然这没什么大不了的,但我正在努力为 future 更大的项目学习)。

这是我的代码,其中包含重复的“交换”方法行。

public int[] myAlgorithm(int[] arrayOfInts, int size){
boolean done = true;
int j= 0;

while (j <= n-2){
if (arrayOfInts[j] > arrayOfInts[j+1]){
int tempHolder = arrayOfInts[j];
arrayOfInts[j] = arrayOfInts[j+1];
arrayOfInts[j+1] = tempHolder;
done = false;
}
j = j + 1;
}
j = size - 1;
while (j >= 1){
if (arrayOfInts[j] <= arrayOfInts[j-1]){
int tempHolder = arrayOfInts[j];
arrayOfInts[j] = arrayOfInts[j+1];
arrayOfInts[j+1] = tempHolder;
done = false;
}
j--;
}
if (!done)
myAlgorithm(arrayOfInts, size)
else
return arrayOfInts;
}

最佳答案

I'll have to send in the array as a parameter and take it out as well

您只需“发送”并直接在数组上操作。实际上,将参数传递给方法是一种非常便宜的操作,如果调用次数足够多,编译器可能会对其进行优化,因此您不必太担心它(除非您通过分析证明这是性能损失你的申请)。

在您的情况下,您可以使用如下方法:

public void swap(int[] arrayOfInts, int i, int j) {
int tempHolder = arrayOfInts[i];
arrayOfInts[i] = arrayOfInts[j];
arrayOfInts[j] = tempHolder;
}

你会称它为:

swap(arrayOfInts, j, j+1);

为什么有效?

Java passes arguments by value ,但对于对象(即非基本类型,包括数组),传递的值是对对象的引用。换句话说,swap 方法的参数是对与调用代码中相同数组的引用,因此您可以直接处理该数组,而不必将其发送回调用方法。

关于java - 通过创建一种方法来简化 Java 代码……但是在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14490730/

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