java My bubble排序似乎运行了太多次,或者是向后运行
我正在创建一个程序,按照字典顺序打印出序列的所有排列。算法的一部分是这样做的,它要求我在交换发生点之后将所有数字按升序排序
然而,我的冒泡排序似乎在重新排列错误的数字,即使它在循环的前8次左右运行中排列得很好。我想这与我的循环需要运行多少次有关,但我不知道是什么
以下是我的排序不起作用的示例:
序列为:2-3-4-1,需要重新排列为:2-3-1-4。所以在3之后,所有的数字都需要按升序重新排列。然而,输出是:2-1-3-4。这意味着它是在2之后而不是1之后重新排列它们
这是我喜欢的类型:
for(int i=newTrueIndex; i < l; i++)
{
for(int j=seenCount+1; j < l; j++)
{
if(seq[j-1] > seq[j])
{
int temp4=seq[j-1];
seq[j-1] = seq[j];
seq[j] = temp4;
}
}
}
此时,newTrueIndex=1,seenCount=1
这些数字都存储在seq中
# 1 楼答案
这将帮助您按升序排序
# 2 楼答案
关于代码的一些注释
是否需要使用气泡排序?(这是家庭作业吗)。如果没有的话,还有java。util。数组。排序()method,您可以使用它:
java.util.Arrays.sort(seq, newTrueIndex, l)
我的#1猜测是
l
的值不是你所期望的j应该从seeonCount开始在代码中创建一个潜在的失败点
i
和j
应该在相同的范围内迭代。如果范围从newTrueIndex
开始,那么两个变量都应该从这个值开始。如果两个起点不同步,添加第二个起点(即:seenCount)可能会产生问题j
是从seenCount
开始的,即:表示数量但用作索引的值。仅当索引从0开始时,计数才等效于索引