您好,我正在尝试弄清楚如何在 Java 中使用 BubbleSort,但我的代码出错了,我不知道为什么
import java.util.ArrayList;
public class SortsRunner {
public static void BubbleSort(ArrayList<Integer> nums) {
ArrayList<Integer> arr = new ArrayList<Integer>();
int n = arr.size();
for (int i = 0; i < n-1; i++)
for (int j = 0; j < n-i-1; j++)
if (arr.get(j) > arr.get(j+1))
{
int temp = arr.get(j);
arr.get(j) = arr.get(j+1);
arr.get(j+1) = temp;
}
}
public static void SelectionSort(ArrayList<Integer> nums) {
}
public static void printArrayList(ArrayList<Integer> nums) {
for(int i = 0; i < nums.size(); i++) {
System.out.println(nums.get(i) + " ");
}
System.out.println();
}
public static ArrayList<Integer> makeRandomArrayList() {
ArrayList<Integer> nums = new ArrayList<>();
for(int i = 0; i < (int)(Math.random() * 11) + 5; i++) {
nums.add((int)(Math.random() * 100));
}
return nums;
}
public static void main(String[] args) {
printArrayList(makeRandomArrayList());
}
}
当我到达 arr.get(j) = arr.get(j+1);
和 arr.get(j+1) = temp;
时左侧错误提示“赋值的左侧必须是变量。”谁能帮我解决这个问题吗?
最佳答案
arr.get(j) = arr.get(j+1);
arr.get(j+1) = temp;
您正在尝试为方法调用的结果分配一个值。
你就是不能这么做。您只能分配给局部变量、当前类中的字段、字段访问(例如 foo.bar = ...
)或数组元素(例如 foo[0] = ...
)。
相反,您应该使用 set
来更新列表元素:
arr.set(j, arr.get(j+1));
arr.set(j+1, temp);
<小时/>
对于在列表中交换两个元素的特定情况,您可以使用 Collections.swap
:
Collections.swap(arr, j, j+1);
关于java - 尝试使用 ArrayList<Integer> 创建冒泡排序时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60435766/