0
我爲整數創建了一個數組冒泡排序函數,它與正整數完美協作,但是當使用負整數時會崩潰。初始顯示功能可以工作,但只會凍結。我試過一個signed int數組無效。C++ Bubble Sort Negative Numbers
我已經看了所有,但無法找到任何其他人與這個確切的問題。
int defaultArray[6] = { 12, -5, 21, -1, 15, 17 };
int numElements = 6;
int lastSwap;
int searchEnd = numElements - 1;
bool sorted = false;
while (!sorted)
{
for (int i = 0; i < searchEnd; ++i)
{
// If the number in position i is larger than the number in the
// position i + 1 then swap them
if (defaultArray[i] > defaultArray[i + 1]) {
int temp = defaultArray[i];
defaultArray[i] = defaultArray[i + 1];
defaultArray[i + 1] = temp;
lastSwap = i + 1;
}
}
// If the lastSwap is at position one we can conclude that the array is
// sorted so if lastSwap isn't 1 move searchEnd and continue
if (lastSwap != 1)
{
// Conclude that from lastSwap to the end of the array is sorted
// searchEnd begins one position to the left of lastSwap
searchEnd = lastSwap - 1;
}
else {
sorted = true;
}
你有點忘了描述問題。你只是說它「停止工作」。但是,這是什麼意思?它會崩潰嗎?它會永久循環嗎?它會產生不正確的結果嗎? – 2014-09-21 00:33:24
這裏沒有你所有的代碼。你最初在哪裏設置'lastSwap',你在哪裏設置你的(外部)循環? – 2014-09-21 00:44:03
有一件事,如果你的數組開始排序,lastSwap仍然未定義,searchEnd也是如此。 – dhavenith 2014-09-21 00:44:45