【问题标题】:Java - BubbleSort Algorithm for listJava - 列表的冒泡排序算法
【发布时间】:2018-04-25 00:44:25
【问题描述】:

所以我尝试使用冒泡排序对我的列表进行排序,但排序后给出的输出结果非常错误。代码中似乎存在某种问题,但我不太确定......可能只是我自己很愚蠢。

public static void main(String[] args) {

    List list = new ArrayList();
    list.add(1);
    list.add(6);
    list.add(3);
    list.add(4);
    list.add(45);
    list.add(6);
    list.add(234);
    list.add(8);
    list.add(9);

    bubbleSort(list);
    System.out.println(list);
}
public static void bubbleSort(List<Integer> list) {

    int n = list.size();
    int temp = 0;

    for (int i = 0; i < n-i; i++) {
        for (int j = 0; j < (n - i - 1); j++) {

            if (list.get(j) > list.get(j+1)) {
                temp = list.get(j);
                list.set(j,list.get(j+1));
                list.set(list.get(j+1), temp);
            }

        }
    }
}

它给出的输出是[1, 3, 3, 6, 6, 6, 8, 8, 45]

【问题讨论】:

    标签: java sorting arraylist bubble-sort


    【解决方案1】:

    问题在于你的交换

    list.set(list.get(j+1), temp);
    

    应该是

    list.set(j+1, temp);
    

    使用list.get(j+1) 设置的索引与您的预期不同


    另请注意,您的列表不会完全排序

    for(int i = 0; i < n-i; i++)
    

    这只会处理大约一半的逆序数组 (5,4,3,2,1 -> 2,1,3,4,5)

    你应该减去 1 而不是 i

    for(int i = 0; i < n-1; i++)
    

    【讨论】:

      猜你喜欢
      • 2013-09-04
      • 1970-01-01
      • 2012-02-17
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      • 2013-11-02
      • 2016-11-01
      • 1970-01-01
      相关资源
      最近更新 更多