gpt4 book ai didi

java - 双向冒泡排序

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

enter image description here

我必须解决以下问题。所以最初我有一个冒泡排序,现在我修改它使其双向。以下是我的解决方案。

public void bubbleSort() {
int temp;
int out;
int outNew = 0;
int in;

for (out = nElems - 1; out > outNew; out--) {

for (in = 0; in < out; in++) {

if (a[in] > a[in + 1]) {
temp = a[in + 1];
a[in + 1] = a[in];
a[in] = temp;
}
}

for (int j = in - 1; j > outNew; j--) {

if (a[j] < a[j - 1]) {
temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
}

}

outNew++;

}

}

当我调用冒泡排序对我创建的数组中的几个随机数进行排序时,它似乎排序正常。我的问题是所有开发人员,我的解决方案是否满足上面发布的问题,以及我可以做些什么来使这个解决方案更有效(如果可能)。如果这是一个小问题,我很抱歉,我通常在这里寻找提示和建议而不是代码,因为它可以帮助我更好地学习。我感谢所有答案,并乐于接受任何建议。

最佳答案

您的第一个内部循环似乎有点低效,因为您的数组将在两端部分排序。在第一轮之后(一次递增索引,一次递减索引),第一个和最后一个元素已经是正确的,因此不需要从索引 0 开始(顺便说一句,任务/练习需要这样做)。

以下 ASCII 艺术演示了算法应该在具有 9 个元素的数组示例中对哪些索引进行操作(包括使用 in+1j-1;应考虑 | 之间的所有索引):

position:   0    1    2    3    4    5    6    7    8
------------------------------------------------------------
| -> |
| <- |
| -> |
| <- |
| -> |
| <- |
| -> |
| <- |

但是你的算法做的是:

position:   0    1    2    3    4    5    6    7    8
------------------------------------------------------------
| -> |
| <- |
| -> |
| <- |
| -> |
| <- |
| -> |
| <- |

您必须修复第一个内部 for 循环的初始索引。

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

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