Предмет: Информатика, автор: Kukuwka0Ha0DepeBe

С++
Завдання 1. Дан масив чисел розмірністю 10 елементів.
Написати функцію, яка сортує масив за зростанням або за
спаданням, залежно від третього параметра функції. Якщо
він дорівнює true, сортування йде за спаданням, якщо
false, то за зростанням. Перші 2 параметри функції — це
масив і його розмір, третій параметр за замовчуванням
дорівнює false.
Завдання 2. Написати функцію, яка сортує першу половину масиву за спаданням, а другу — за зростанням,
використовуючи сортування простими вставками.
Завдання 3. У функцію передається масив випадкових
чисел у діапазоні від -20 до +20. Необхідно знайти позиції крайніх від’ємних елементів (найлівішого від’ємного
елемента і найправішого від’ємного елемента) і впорядкувати елементи, що знаходяться між ними.

Ответы

Автор ответа: armani11201120
1

Ответ:

Завдання 1

void sortArray(int arr[], int size, bool descending = false) {

   int i, j, temp;

   for(i = 0; i < size-1; i++) {

       for(j = i+1; j < size; j++) {

           if(descending) {

               if(arr[i] < arr[j]) {

                   temp = arr[i];

                   arr[i] = arr[j];

                   arr[j] = temp;

               }

           } else {

               if(arr[i] > arr[j]) {

                   temp = arr[i];

                   arr[i] = arr[j];

                   arr[j] = temp;

               }

           }

       }

   }

}

Завдання 2

void sortHalfArray(int arr[], int size) {

   for(int i = 1; i < size; i++) {

       int key = arr[i];

       int j = i - 1;

       while(j >= 0 && arr[j] < key) {

           arr[j + 1] = arr[j];

           j--;

       }

       arr[j + 1] = key;

   }

   for(int i = size / 2 + 1; i < size; i++) {

       int key = arr[i];

       int j = i - 1;

       while(j >= size / 2 && arr[j] > key) {

           arr[j + 1] = arr[j];

           j--;

       }

       arr[j + 1] = key;

   }

}

Завдання 3

void sortBetweenNegatives(int arr[], int size) {

   int leftNegIndex = -1, rightNegIndex = -1;

   for(int i = 0; i < size; i++) {

       if(arr[i] < 0) {

           if(leftNegIndex == -1) {

               leftNegIndex = i;

           }

           rightNegIndex = i;

       }

   }

   if(leftNegIndex == -1 || rightNegIndex == -1) {

       return;

   }

   for(int i = leftNegIndex + 1; i < rightNegIndex; i++) {

       int key = arr[i];

       int j = i - 1;

       while(j >= leftNegIndex && arr[j] > key) {

           arr[j + 1] = arr[j];

           j--;

       }

       arr[j + 1] = key;

   }

}

Объяснение:

Похожие вопросы
Предмет: Українська мова, автор: Sizminatv
Предмет: Литература, автор: Аноним