java - Java 中的双向冒泡排序?

标签 java algorithm sorting bubble-sort

我需要在我的代码中实现双向冒泡排序。

换句话说,in 将从左到右首先携带最大值

但是当它到达out时,它应该反转并从右到左携带最小值

我被建议在当前索引之外实现另一个 out 索引

这是我目前所拥有的——只有 2 个循环。我猜我必须以某种方式将它们结合起来?

    public void bubbleSort() {
    int out, in; // nElems in my case is 4, because I have 4 elements in my array

    for(out=nElems-1; out>1; out--) // outer loop backward
        for(in=out; in>1; in--) // inner loop backward
            if(a[in] < a[in-1])
                swap(in, in-1);

    for(out=0; out<nElems; out++) // outer loop forward
        for(in=0; in<out; in++) // inner loop forward
            if(a[in] > a[in+1])
                swap(in, in+1); 

最佳答案

    public void bidirectionalBubbleSort()
    {
       int left = 0, right = a.length-1;
       while (left < right)
       {
          for (int pos = left; pos < right; pos++)
          {
             if (a[pos] > a[pos+1])
                swap(pos, pos+1);
          }
          right--;


          for (int pos = right; pos > left; pos--)
          {
             if (a[pos] < a[pos-1])
               swap(pos, pos-1);
          }
          left++;
       }
   }  

关于java - Java 中的双向冒泡排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3832229/

上一篇:php - combn r算法

下一篇:c++ - 递归迭代

相关文章:

algorithm - Bellman-Ford 算法和步骤数

java - 字符串归并排序实现

c - 使用 qsort 对列表进行排序?

algorithm - 如何在golang中按字符a对字符串数组进行排序

java - HTTP 状态 404 - 请求的资源不可用

java - 升级到 Java8 和端点 V2 后 AppEngine 出现错误

java - SQL查询没有返回结果怎么办?

python - 如何在 python 中实现 makefile 风格的算法

java - 使用 DecimalFormat 格式化大双数

arrays - 查找是否存在 "common number"的算法