Почему в Debug программа работает, а в Release нет? - C (СИ)
Формулировка задачи:
Почему в Debug программа работает, а в Release нет?
Решение задачи: «Почему в Debug программа работает, а в Release нет?»
textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <intrin.h> #include <stdlib.h> void ssort(int* a, int N) { int t, isswap; for (int i = N - 1; i >= 0; i--) { isswap = 1; for (int j = 0; j < i; j++) { if (a[j] > a[j + 1]) { t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; isswap = 0; } } if (isswap == 1) break; } } void qs(int *arr, int a, int b) { if (a < b) { int l = a, r = b, t; int piv = arr[(l + r) / 2]; do { while (arr[l] < piv) l++; while (arr[r] > piv) r--; if (l <= r) { t = arr[l]; arr[l] = arr[r]; arr[r] = t; l++; r--; } } while (l <= r); qs(arr, a, r); qs(arr, l, b); } } int main() { unsigned __int64 start1, end1, start2, end2, all1, all2; int N = 1000, sred = 0; for (int x = 0; x < 10; x++) { do { int *A = new int[N]; int *B = new int[N]; for (int k = 0; k < N; k++) { A[k] = rand() % 100; B[k] = A[k]; } start1 = __rdtsc(); ssort(A, N); end1 = __rdtsc(); all1 = end1 - start1; start2 = __rdtsc(); qs(B, 0, N - 1); end2 = __rdtsc(); all2 = end2 - start2; N--; } while (all1 > all2); sred += N; } sred /= 10; printf("%d\n", sred); return 0; }
Объяснение кода листинга программы
- Программа реализует сортировку массива методом быстрой сортировки (quick sort).
- Функция
ssort
реализует сортировку массива методом выборочного сортировки (selection sort). - Функция
qs
реализует быструю сортировку массива. - В функции
main
создается массив случайных целых чисел и выполняется 10 итераций сортировки с использованием разных методов. - На каждой итерации измеряется время выполнения сортировки с помощью функции
__rdtsc()
, которая возвращает значение процессорного счетчика. - На каждой итерации выполняется сортировка массива методом выборочной сортировки и быстрой сортировки.
- Время выполнения каждой сортировки измеряется с помощью функции
__rdtsc()
. - Если время выполнения быстрой сортировки больше, чем время выполнения выборочной сортировки, размер массива уменьшается на единицу, чтобы увеличить эффективность быстрой сортировки.
- После 10 итераций вычисляется среднее время выполнения каждой сортировки.
- Результат выводится на консоль.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д