gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:48:59 25 4
gpt4 key购买 nike

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

换句话说,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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com