c ++ пузырьковая сортировка компактных указателей

Я пытаюсь реализовать пузырьковую сортировку с помощью компактных указателей. Сортировка, кажется, сортирует только первые два, а затем дает сбой при попытке использовать драйвер DisplayValues, предоставленный учителем.

  float *Sort(float *first, size_t elements)
{
{
for (didSwap = 0, current = first, next = first + 1; current < last; ++current, ++next)
{
didSwap = 1;
}
}
--last;
}
while (didSwap);

return first;
}

0

Решение

Это довольно просто, процедура профессора ожидает, что массив будет в порядке убывания. Ваш код выглядит правильно для меня, но сортируется по возрастанию.

Кстати, ваш профессор имеет недоразумение о том, как setiosflags работает. Так должно быть

cout << setiosflags(ios_base::fixed);

установить флаги на cout поток. У каждого потока свои флаги, у вашего профессора, кажется, есть впечатление, что существует один глобальный набор флагов. Та же ошибка для resetiosflags,

1

Другие решения

Разве не должно быть ‘do’, чтобы сделать этот блок ‘do {…} while?

float *Sort(float *first, size_t elements)
{
do
{
for (didSwap = 0, current = first, next = first + 1; current < last; ++current, ++next)
{
didSwap = 1;
}

--last;
}
while (didSwap);
}
0