【问题标题】:Is this code a correct implementation of Bubble Sort?这段代码是冒泡排序的正确实现吗?
【发布时间】:2011-08-02 22:43:10
【问题描述】:

我使用以下冒泡排序算法进行排序。 这个算法正确吗?

for (int a = itemWiseBidderList.size() - 1; a > 1; a--)
{
    for (int j = 0; j < a; j++)
    { 
        if ((itemWiseBidderList.get(j).getRankInInt()) > (itemWiseBidderList.get(j + 1).getRankInInt()))
        {
           Collections.swap(itemWiseBidderList, j, j + 1);
        }
    }
}

【问题讨论】:

  • 你可以尝试查找一个标准的冒泡排序,看看它是否正确?
  • 你测试过代码吗?它是否按照您的预期对 itemWiseBidderList 进行了排序?如果是,则算法是正确的,否则就是错误的。在后一种情况下,请告诉我们输出是什么,我们将为您提供帮助。如果是第一种情况,那只是浪费我们的时间;)
  • 你测试的时候它做了什么?
  • 没关系,因为使用冒泡排序根本不正确。使用您的收藏附带的排序方法。

标签: java sorting bubble-sort


【解决方案1】:

如果冒泡排序不是必需的(通过作业?),那么在 Java 中实现排序的正确方法是调用

Collections.sort(itemWiseBidderList);

如果您的列表项实现Comparable,或者

Collections.sort(itemWiseBidderList, new Comparator() {
    public int compare(Object o1, Object o2) {
        // Compare o1, o2 .getRankInInt() here
    }
});

这会比冒泡排序快很多。

【讨论】:

    【解决方案2】:

    这是伪代码,你可以验证你的代码是否正确:

    procedure bubbleSort( A : list of sortable items )
      n = length(A)
      for (i = 0; i < n; i++)
         /* back through the area bringing smallest remaining element to position i */
         for (j = n-1; j > i; j--)
            if A[j-1] > A[j] then
               swap(A[j-1], A[j])
            end if
         end for
      end for
    end procedure
    

    来源wikipedia

    【讨论】:

      【解决方案3】:

      它似乎是正确的(虽然我没有测试它),但是 Collection 应该是可比的,所以你应该打电话给 itemWiseBidderList.sort()

      itemWiseBidderList 是什么数据类型?

      【讨论】:

      • Collection 没有 sort() 方法。某些集合无法排序(例如Set)。但是Collections中有一个实用方法
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-14
      • 1970-01-01
      • 2018-09-10
      • 2020-11-20
      • 2021-08-17
      相关资源
      最近更新 更多