С чем может быть это связано? ERROR 1: Undefined symbols: ERROR 2: Linker command failed with exit code 1 (use -v to see invocation) КОД ПРОГРАМЫ:
#include <iostream>
#include <ctime>
#include <algorithm>
using namespace std;
void fillRandomNum(int arr[], int size);
void fillAscending(int arr[], int size);
void fillDescending(int arr[], int size);
void printArray(int arr[], int size);
void quickSort(int arr[], int low, int high, long long& comparisons, long long& assignments);
int partition(int arr[], int low, int high, long long& comparisons, long long& assignments);
bool isSorted(int arr[], int size);
struct Menu{
short num;
};
int main() {
srand(static_cast<unsigned>(time(NULL)));
Menu menu;
const int sizes[] = {10, 100, 1000, 5000, 10000};
cout<<"\tQuickSort\n";
cout<<"------------------------------------------"<<endl;
while (menu.num!=1 && menu.num != 2 && menu.num != 3) {
cout<<"Натисність: "<<endl;
cout<<"1 - сортування масиву з випадковою послідовністью елементів."<<endl;
cout<<"2 - сортування масиву зі зростаючою послідовністью елементів."<<endl;
cout<<"3 - сортування масиву зі спадаючою послідовністью елементів."<<endl;
cin>>menu.num;
}
for (int size : sizes) {
int arr[size];
switch (menu.num) {
case 1:
fillRandomNum(arr, size);
break;
case 2:
fillAscending(arr, size);
break;
case 3:
fillDescending(arr, size);
break;
default:
break;
}
long long comparisons = 0;
long long assignments = 0;
clock_t start = clock();
quickSort(arr, 0, size - 1, comparisons, assignments);
clock_t end = clock();
double timeTaken = double(end - start) / CLOCKS_PER_SEC;
cout << "Розмір масиву: " << size << endl;
cout << "Час сортування: " << timeTaken << " секунд" << endl;
cout << "Кількість порівнянь: " << comparisons << endl;
cout << "Кількість присвоєнь: " << assignments << endl;
cout<<"------------------------------------------"<<endl;
if (isSorted(arr, size)) {
cout << "Масив відсортовано правильно." << endl;
} else {
cout << "Масив не відсортовано правильно." << endl;
}
}
return 0;
}
void fillRandomNum(int arr[], int size){
for (int i = 0; i < size; i++) {
arr[i] = rand() % 100;
}
}
void fillAscending(int arr[], int size){
for (int i = 0; i < size; i++) {
arr[i] = i;
}
}
void fillDescending(int arr[], int size){
for (int i = 0; i < size; i++) {
arr[i] = size - i;
}
}
void printArray(int arr[], int size){
for (int i = 0; i < size; i++) {
cout<<arr[i]<<" ";
}
cout<<endl;
}
void quickSort(int arr[], int low, int high, long long& comparisons, long long& assignments){
if (low < high) {
int pi = partition(arr,low,high, comparisons, assignments);
quickSort(arr, low, pi - 1, comparisons, assignments);
quickSort(arr, pi + 1, high, comparisons, assignments);
}
}
int partition(int arr[], int low, int high, long long& comparisons, long long& assignments){
int pivot = arr[high];
int i = low - 1;
for (int j = low; j <= high; j++) {
comparisons++;
if (arr[j] < pivot) {
i++;
swap(arr[i], arr[j]);
assignments++;
}
}
swap(arr[i+1], arr[high]);
assignments++;
return i+1;
}
int arr[size];не допускает... Во-вторых, у васmenuне инициализирована. В-третьих, и это ответ на ваш вопрос — где реализация функцииisSorted? – Harry Oct 20 '23 at 11:37