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