单独交换时冒泡排序不起作用
Bubble sort not working when swapping done separately
我的代码仅在我在冒泡排序函数中使用交换时有效,但是如果我删除该部分并将其放入函数中然后调用它作为交换使用。它不起作用并给出我错了output.What错了我看不懂
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 中的方法参数按值传递,从不按引用传递。这样的分配没有意义:
void swap(int a, int b) {
int temp;
temp = a;
a = b;
b = temp;
}
此方法之外的调用者将看不到它。对他来说,“a”和“b”将保持原来的值。
作为一种快速解决方法,您可以使用 AtomicInteger 实例来包装值。
我的代码仅在我在冒泡排序函数中使用交换时有效,但是如果我删除该部分并将其放入函数中然后调用它作为交换使用。它不起作用并给出我错了output.What错了我看不懂
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 中的方法参数按值传递,从不按引用传递。这样的分配没有意义:
void swap(int a, int b) {
int temp;
temp = a;
a = b;
b = temp;
}
此方法之外的调用者将看不到它。对他来说,“a”和“b”将保持原来的值。
作为一种快速解决方法,您可以使用 AtomicInteger 实例来包装值。