我正在创建一个程序,该程序按字典顺序打印出序列的所有排列。执行此操作的算法的一部分要求我在发生交换的点之后将所有数字按升序排序。
然而,我的冒泡排序似乎重新排列了错误的数字,即使它在循环中的前 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中。