Почему в 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;
}

Объяснение кода листинга программы

  1. Программа реализует сортировку массива методом быстрой сортировки (quick sort).
  2. Функция ssort реализует сортировку массива методом выборочного сортировки (selection sort).
  3. Функция qs реализует быструю сортировку массива.
  4. В функции main создается массив случайных целых чисел и выполняется 10 итераций сортировки с использованием разных методов.
  5. На каждой итерации измеряется время выполнения сортировки с помощью функции __rdtsc(), которая возвращает значение процессорного счетчика.
  6. На каждой итерации выполняется сортировка массива методом выборочной сортировки и быстрой сортировки.
  7. Время выполнения каждой сортировки измеряется с помощью функции __rdtsc().
  8. Если время выполнения быстрой сортировки больше, чем время выполнения выборочной сортировки, размер массива уменьшается на единицу, чтобы увеличить эффективность быстрой сортировки.
  9. После 10 итераций вычисляется среднее время выполнения каждой сортировки.
  10. Результат выводится на консоль.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы