/*
* @file lab4_1.cpp
* @author Гавалян Д.Є, гр. 515i
* @date 21 квiтня 2025
* @brief Лабораторна робота № 4, варiант 19
*
* Функцiї. Швидке сортування. Робота з вiдлагоджувачем. Завдання 1
*/
#include <stdio.h>
#include <locale.h>
#include "module.h"
/* Функцiя main */
int main() {
setlocale(LC_ALL, "Ukr");
//Введення змінних
int arr[N];//масив
int n, choice; // елементи, вибір
printf("Введiть кiлькiсть елементiв (до 50): ");
scanf("%d", &n);
if (n <= 0 || n > N) {
printf("Неправильне значення!\n"); //перевірка на коректну введену кількість елементів
return 1;
}
printf("Оберiть спосiб заповнення масиву:\n");
printf("1 - Ввести вручну\n");
printf("2 - Заповнити випадковими числами\n");
printf("Ваш вибiр: ");
scanf("%d", &choice);
switch (choice)
{
case 1: inputArray(arr, n); //якщо користувач ввів "1", працює алгоритм введення елементів з клавіатури
break;
case 2: randomArray(arr, n); //якщо користувач ввів "2" працює алгоритм генерації елементів за допомогою rand()
break;
default: printf("Такої функцiї не iснує!");
return 0;
}
printf("Масив: ");
printArray(arr, n);
printf("Вiдсортований масив: ");
quicksort(arr, 0, n - 1);//виклик функції сортування
printArray(arr, n);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "module.h"
// Заповнення масиву з клавіатури
void inputArray(int arr[], int n) {
printf("Введiть %d елементiв:\n", n);
for (int i = 0; i < n; i++) {
printf("arr[%d] = ", i);
scanf("%d", &arr[i]);
}
}
// "випадкові" числа
void randomArray(int arr[], int n) {
srand(time(NULL));
for (int i = 0; i < n; i++) {
arr[i] = rand() % 41 - 20; // діапазон від -20 до 20
}
}
// Вивід масиву
void printArray(int arr[], int n) {
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
void quicksort(int arr[], int low, int high) {
if (low >= high) return;
int middle = split(arr, low, high);
quicksort(arr, low, middle - 1);
quicksort(arr, middle + 1, high);
}
int split(int arr[], int low, int high) {
int part_element = arr[low];
while (low < high) {
while (low < high && arr[high] <= part_element) // поменяли <= на >=
high--;
if (low < high)
arr[low++] = arr[high];
while (low < high && arr[low] >= part_element) // поменяли >= на <=
low++;
if (low < high)
arr[high--] = arr[low];
}
arr[high] = part_element;
return high;
}
#ifndef MODULE_H
#define MODULE_H
#define N 50
void inputArray(int arr[], int n);
void randomArray(int arr[], int n);
void printArray(int a[], int n);
void quicksort(int a[], int low, int high);
int split(int a[], int low, int high);
#endif