【发布时间】:2021-11-20 03:14:25
【问题描述】:
我的代码仅在我在冒泡排序函数中使用交换时才有效,但如果我删除该部分并将其放入函数中然后调用它以用作交换。它不起作用并给我一个错误的输出。我无法理解有什么问题
public class BubbleSort
{
void swap(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
void sort(int arr[])
{
int i, j, n=arr.length;
for(i=0; i<n-1; i++)
{
for(j=0; j<(n-i-1); j++)
{
if(arr[j] > arr[j+1])
swap(arr[j], arr[j+1]);
}
}
}
public static void main(String[] args)
{
int i;
int arr[] = {12, 3, 4, 10, 40, 89, 60, 55, 96, 11};
BubbleSort ob = new BubbleSort();
ob.sort(arr);
System.out.println("Array after sorting:");
for(i=0; i<arr.length; i++)
System.out.print(arr[i] + " ");
}
}
【问题讨论】:
-
我不明白,为什么该问题已关闭(并且对非特权用户隐藏)。这与“参考”与“价值”无关。这是关于交换两个变量。当然,这个问题很容易回答,但它仍然是一个定义明确的问题。
-
“这与引用与值无关”,然后您以“Java 中的参数通过值传递,而不是通过引用”开始回答。这完全是关于参考与价值的关系,并且在那里回答了为什么交换不起作用的答案。
-
这个问题肯定是由引用线程的答案来回答的,但问题本身并不相同。允许两个不同的问题有相同的答案。这个问题不会[重复]另一个问题。
-
@30thh 对于重复关闭问题不必相同。答案和基本解释是确定问题是否重复的那些。
-
@Dailija 真的吗?根据这个逻辑,“欧洲最大城市”这个问题与“俄罗斯首都”这个问题重复,只是因为两者的答案都是“莫斯科”。即使您将解释和城市的整个历史都包含在答案中,也不会改变事实。两个原始问题是不同的,不要相互重复。
标签: java arrays sorting swap bubble-sort