@Dmitriy_Gultiaev

Как переставить элементы массива так, чтобы сначала располагались положительные, затем нулевые, а за ними отрицательные компоненты?

Помогите решить задачу по программированию (желательно код на языке С)

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

К примеру:
исходный массив: -1 0 5 -9 8 -3 5 0 -7 4
результат: 5 8 5 4 0 0 -1 -9 -3 -7
  • Вопрос задан
  • 1041 просмотр
Решения вопроса 1
@WAR_VIK
Думаю что нужно сделать двойную сортировку вот так:
#include <stdio.h>

int main() {
      int arr[10] = {-1, 0, 5, -9, 8, -3, 5, 0, -7, 4};
      int tmp = 0;
      for(int i = 0; i < 9; ++i) {
         for(int j = 0; j < 9; ++j) {
            if(arr[j] < 1) {
                tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp;
            }
            if(arr[j] < 0) {
                tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp;
            }
         }
      }
      for(int i = 0; i < 10; ++i) printf("%d%c", arr[i], ' ');
      return 0;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы