Sobes.tech
Senior

Étant donné un tableau de nombres entiers positifs et négatifs. Triez-le de manière à ce que tous les nombres positifs soient au début dans leur ordre d'origine. Ce qui se trouve dans la seconde moitié du tableau n'a pas d'importance.

sobes.tech IA

Réponse de l'IA

Задача — переставить элементы массива так, чтобы все положительные числа оказались в начале, сохраняя их исходный порядок. Порядок отрицательных чисел во второй части не важен.

Решение можно реализовать, создав новый массив и сначала скопировав туда все положительные числа в порядке их появления, а затем добавив оставшиеся элементы (отрицательные и нули) в любом порядке.

Пример на Python:

arr = [3, -1, 2, -5, 4, -2]

positives = [x for x in arr if x > 0]
others = [x for x in arr if x <= 0]

result = positives + others
print(result)  # [3, 2, 4, -1, -5, -2]

Если нужно сделать это in-place с минимальным дополнительным пространством, можно использовать алгоритм с двумя указателями, но сохранение порядка положительных чисел усложняет задачу и обычно требует дополнительной памяти.