#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <locale.h>
#define SIZE 25
// Функція для обміну двох елементів
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// Функція швидкого сортування (за спаданням)
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pivot = arr[high]; // вибір опорного елементу
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] > pivot) { // > для спадання
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
int pi = i + 1;
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
// Функція для заповнення масиву випадковими числами
void fillRandom(int arr[], int size) {
srand(time(NULL));
for (int i = 0; i < size; i++) {
arr[i] = rand() % 100; // числа від 0 до 99
}
}
// Функція для заповнення масиву з клавіатури
void fillUserInput(int arr[], int size) {
printf("Введiть %d елементiв:\n", size);
for (int i = 0; i < size; i++) {
printf("arr[%d] = ", i);
scanf("%d", &arr[i]);
}
}
// Функція для виводу масиву
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
// Головна функція
int main() {
setlocale(LC_CTYPE, "ukr");
int arr1[SIZE];
int arr2[SIZE];
// Робота з випадковим масивом
printf("Випадковий масив:\n");
fillRandom(arr1, SIZE);
printArray(arr1, SIZE);
quickSort(arr1, 0, SIZE - 1);
printf("Вiдсортований масив (спадання):\n");
printArray(arr1, SIZE);
// Робота з масивом, введеним користувачем
printf("\nМасив, введений користувачем:\n");
fillUserInput(arr2, SIZE);
printArray(arr2, SIZE);
quickSort(arr2, 0, SIZE - 1);
printf("Вiдсортований масив (спадання):\n");
printArray(arr2, SIZE);
return 0;
}