Я создал функцию сортировки пузырьков массива для целых чисел, которая отлично работает с положительными целыми числами, но сработает, когда используются отрицательные целые числа. Начальная функция отображения работает, но затем она просто зависает. Я пробовал подписанный массив int безрезультатно.C++ Bubble Сортировать отрицательные числа
Я просмотрел все, но не могу найти кого-либо еще с этой точной проблемой.
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;
}
Вы как бы забыли описать проблему. Вы просто говорите, что «перестает работать». Но что это значит? Это крушение? Это замкнуто навсегда? Производит ли он неправильные результаты? –
У вас нет всего вашего кода здесь. Где вы изначально устанавливаете 'lastSwap' и где вы устанавливаете его в своем (внешнем) цикле? –
с одной стороны, если ваш массив начинает сортироваться, lastSwap остается неопределенным, и так будет searchEnd. – dhavenith