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

Ответы 1

  • Ответ:

    Завдання 1:

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

       if (descending) {

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

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

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

                       int temp = arr[i];

                       arr[i] = arr[j];

                       arr[j] = temp;

                   }

               }

           }

       } else {

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

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

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

                       int temp = arr[i];

                       arr[i] = arr[j];

                       arr[j] = temp;

                   }

               }

           }

       }

    }

    Завдання 2:

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

       int mid = size / 2;

       // Sort the first half in descending order

       for (int i = 1; i < mid; 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;

       }

       // Sort the second half in ascending order

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

           int key = arr[i];

           int j = i - 1;

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

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

               j--;

           }

           arr[j + 1] = key;

       }

    }

    Завдання 3:

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

       int leftNeg = -1;

       int rightNeg = -1;

       // Find the leftmost negative element

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

           if (arr[i] < 0) {

               leftNeg = i;

               break;

           }

       }

       // Find the rightmost negative element

       for (int i = size - 1; i >= 0; i--) {

           if (arr[i] < 0) {

               rightNeg = i;

               break;

           }

       }

       // Sort the elements between the leftmost and rightmost negative elements

       if (leftNeg != -1 && rightNeg != -1 && leftNeg < rightNeg) {

           for (int i = leftNeg + 1; i < rightNeg; i++) {

               int key = arr[i];

               int j = i - 1;

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

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

                   j--;

               }

               arr[j + 1] = key;

           }

       }

    }

    Объяснение:

  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years