目前我被要求設計四種排序算法(插入,殼,選擇和泡沫),我有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