目前我被要求设计四种排序算法(插入,壳,选择和泡沫),我有4个3中的3个完美工作;唯一不能正常工作的是Bubble Sort。现在,我很清楚正常的气泡排序如何使用temp var来交换两个索引,但棘手的部分是它需要使用数组index [0]作为temp而不是普通的temp,用于交换,并将较低的数组变量向下滑动到列表的前面,并在过程结束时将最后一个索引分配给最大值的temp。使用幻灯片而不是交换的气泡排序
我一直在玩这一段时间,甚至试图查找引用,但可悲的是我找不到任何东西。我希望别人已经做到了这一点,并可以提供一些有用的提示。这是一种最后的手段,因为我一直在用笔和纸来修改和运行通行证,试图发现我的致命错误。无论如何,我的代码如下...
void BubbleSort(int TheArray[], int size)
{
for (int i = 1; i < size + 1; i++)
{
TheArray[0] = TheArray[i];
for (int j = i + 1; j < size; j++)
{
if (TheArray[j] > TheArray[0])
TheArray[0] = TheArray[j];
else
{
TheArray[j - 1] = TheArray[j];
}
}
TheArray[size- 1] = TheArray[0];
}
}
感谢您的任何反馈;非常感谢。
它可能支付提供你被要求做的确切的措辞,以防你误解了它。从我在这里看到的,你做的第一件事就是覆盖'TheArray [0]'的值,这不是一件好事。 – paddy
您可以使用[XOR-Swap](https://en.wikipedia.org/wiki/XOR_swap_algorithm)。 –
如果说明的目标是向下移动一个子数组(称为幻灯片),那么它不是一个冒泡排序,但是插入排序的变化可以称为删除排序。在子阵列向下移动时,您仍然需要一个临时变量来保存第一个值,然后将该值放在当前空闲位置。如果TheArray [0]不被视为数据的一部分,则可以将其用作临时变量。 – rcgldr