Вопреки тому, что вы утверждаете, я не думаю, что проблема заключается в реализации решения. Если бы это было так, вы бы указали, что у вас возникли проблемы при реализации. Но вы этого не сделали, поэтому я думаю, что проблема заключается в том, чтобы придумать сам алгоритм.
Вы запросили решение, требующее O (1) памяти и O (N ^ 2) времени. Это на самом деле больше, чем требуется. При сортировке массива на месте и последующей его печати решение, требующее O (1) памяти и O (N log N), составляет возможно .
Но давайте предположим, что вы хотели не -разрушительное решение, означающее, что никто не изменяет входной массив. Ниже приведено такое решение, требующее O (1) памяти и O (N ^ 2) времени:
- Set max = максимальное целое число.
- Set count = 0.
- Хотя число меньше количества элементов в массиве,
- Установить следующий = минимальное целое число.
- Для каждого элемента массива:
- Если элемент значение равно max,
- Вывести значение элемента.
- Счетчик приращений.
- Иначе,
- Если значение элемента больше следующего и меньше максимального,
- Установить рядом со значением элемента
- Установить макс = следующее.
Каждый из этих шагов тривиален для реализации в C.