单独交换时冒泡排序不起作用

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 实例来包装值。