Академический Документы
Профессиональный Документы
Культура Документы
Лабораторная работа № 5
Варианты алгоритмов
Сортировка слиянием.
Сортировка qsort ().
int main() {
int n;
printf("Введите размер массива (от 15 до 100): ");
scanf("%d", &n);
while (n < 15 || n > 100) {
printf("Размер массива должен быть от 15 до 100. Попробуйте еще раз: ");
scanf("%d", &n);
}
int arr[n];
int choice;
do {
printf("\nМеню параметров:\n");
printf("1. Демонстрация работы программ для массива из %d элементов.\n",
n);
printf("2. Вычисления для массива случайных чисел (n=10000, n=100000).\
n");
printf("3. Эмпирический анализ функции сортировки qsort.\n");
printf("0. Выход из программы.\n");
printf("Выберите параметр: ");
scanf("%d", &choice);
switch (choice) {
case 1: {
int arr[n];
printf("Введите элементы массива: ");
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("\nИсходный массив: ");
print_array(arr, n);
int sort;
do {
printf("1.Сортировка методом пузырька\n2.Сортировка
методом прямого выбора\n3.Шейкерная сортировка в порядке возрастания\n4.Сортировка
методом Шелла\n5.Быстрая сортировка Хоара\n6.Сортировка слиянием\n7.Сортировка
qsort()\n8.Поиск\n9.Вернуться к выбору сортировки\n");
printf("Выберите параметр: ");
scanf("%d", &sort);
switch (sort) {
case 1: {
if (index == -1) {
printf("\nЭлемент %d не найден\n",
x);
} else {
printf("\nЭлемент %d найден в
позиции %d\n", x, index);
}
break;
}
case 9: {
printf("Exit");
break;
}
default : {
printf("Ошибка! Неверный выбор
параметра.\n");
break;
}
}
} while (sort != 9);
break;
}
case 2: {
int arr1[10000];
int arr2[100000];
fill_random(arr1, 10000);
fill_random(arr2, 100000);
start = clock();
bubble_sort(arr1, 10000);
end = clock();
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
printf("Сортировка массива из 100000 элементов заняла %f
секунд.\n", cpu_time_used);
start = clock();
bubble_sort(arr2, 100000);
end = clock();
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
start = clock();
sort(arr, i);
end = clock();
start = clock();
qsort(arr1, n, sizeof(int), compare1);
end = clock();
return 0;
}
Меню параметров:
1. Демонстрация работы программ для массива из 15 элементов.
2. Вычисления для массива случайных чисел (n=10000, n=100000).
3. Эмпирический анализ функции сортировки qsort().
0. Выход из программы.
Выберите параметр: 3
Эмпирический анализ функции сортировки пузырьком:
Время выполнения сортировки массива из 1000 элементов: 0.000070 секунд.
Количество сравнений для сортировки массива из 1000 элементов: 999.
Время выполнения сортировки массива из 2000 элементов: 0.000103 секунд.
Количество сравнений для сортировки массива из 2000 элементов: 1999.
Время выполнения сортировки массива из 3000 элементов: 0.000158 секунд.
Количество сравнений для сортировки массива из 3000 элементов: 2999.
Время выполнения сортировки массива из 4000 элементов: 0.000227 секунд.
Количество сравнений для сортировки массива из 4000 элементов: 3999.
Время выполнения сортировки массива из 5000 элементов: 0.000279 секунд.
Количество сравнений для сортировки массива из 5000 элементов: 4999.
Время выполнения сортировки массива из 6000 элементов: 0.000319 секунд.
Количество сравнений для сортировки массива из 6000 элементов: 5999.
Время выполнения сортировки массива из 7000 элементов: 0.000373 секунд.
Количество сравнений для сортировки массива из 7000 элементов: 6999.
Время выполнения сортировки массива из 8000 элементов: 0.000436 секунд.
Количество сравнений для сортировки массива из 8000 элементов: 7999.
Время выполнения сортировки массива из 9000 элементов: 0.000508 секунд.
Количество сравнений для сортировки массива из 9000 элементов: 8999.
Время выполнения сортировки массива из 10000 элементов: 0.000554 секунд.
Количество сравнений для сортировки массива из 10000 элементов: 9999.
Время выполнения сортировки массива из 1000 элементов: 0.000003 секунд.
Количество сравнений для сортировки массива из 1000 элементов: 999.
Время выполнения сортировки массива из 2000 элементов: 0.000002 секунд.
Количество сравнений для сортировки массива из 2000 элементов: 1999.
Время выполнения сортировки массива из 3000 элементов: 0.000002 секунд.
Количество сравнений для сортировки массива из 3000 элементов: 2999.
Время выполнения сортировки массива из 4000 элементов: 0.000002 секунд.
Количество сравнений для сортировки массива из 4000 элементов: 3999.
Время выполнения сортировки массива из 5000 элементов: 0.000003 секунд.
Количество сравнений для сортировки массива из 5000 элементов: 4999.
Время выполнения сортировки массива из 6000 элементов: 0.000003 секунд.
Количество сравнений для сортировки массива из 6000 элементов: 5999.
Время выполнения сортировки массива из 7000 элементов: 0.000002 секунд.
Количество сравнений для сортировки массива из 7000 элементов: 6999.
Время выполнения сортировки массива из 8000 элементов: 0.000002 секунд.
Количество сравнений для сортировки массива из 8000 элементов: 7999.
Время выполнения сортировки массива из 9000 элементов: 0.000002 секунд.
Количество сравнений для сортировки массива из 9000 элементов: 8999.
Время выполнения сортировки массива из 10000 элементов: 0.000003 секунд.
Количество сравнений для сортировки массива из 10000 элементов: 9999.