Вопрос задан 21.03.2021 в 19:48. Предмет Информатика. Спрашивает Zolotareva Alina.

В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец

с сохранением порядка следования. Дополнительный массив заводить не разрешается. ​
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Катковская Ксения.

===== PascalABC.NET =====

begin

 var a := ArrRandom(4, -10, 20);

 a.Println;

 // ищем j - позицию первого неотрицательного элемента

 var j := -1;

 for var i := 0 to a.High do

   if a[i] >= 0 then // нашли

   begin

     j := i;

     break

   end;

 if j > -1 then

 begin

   for var i := j + 1 to a.High do

     if a[i] < 0 then

     begin

       for var k := i downto j + 1 do

         Swap(a[k], a[k-1]);

       j += 1;

       if j >= a.High then break;

     end;

     a.Println

 end

 else

   Println('Нет положительных элементов')

end.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

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

Вот алгоритм решения этой задачи:

  1. Инициализируйте переменные "left" и "right" со значениями 0 и размером массива минус 1 соответственно.
  2. Пока left <= right:
    • Если arr[left] < 0, увеличьте left на 1.
    • Если arr[right] >= 0, уменьшите right на 1.
    • Если arr[left] >= 0 и arr[right] < 0, поменяйте местами arr[left] и arr[right].
  3. В результате выполнения алгоритма все отрицательные элементы будут перемещены в начало массива, а остальные элементы - в конец, с сохранением порядка следования.

Вот пример кода на Python, реализующего описанный алгоритм:

python
def move_negative_elements(arr): left = 0 right = len(arr) - 1 while left <= right: if arr[left] < 0: left += 1 elif arr[right] >= 0: right -= 1 elif arr[left] >= 0 and arr[right] < 0: arr[left], arr[right] = arr[right], arr[left] left += 1 right -= 1 return arr

Вы можете вызвать функцию move_negative_elements и передать ей ваш одномерный массив. Она вернет массив с перемещенными отрицательными элементами в начало и положительными (или нулевыми) - в конец.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос