Я пишу программу, которая узнает, сколько миллисекунд требуется для прохождения различных процедур сортировки, чтобы найти наиболее эффективные. У меня возникли проблемы с получением правильного времени выхода из программы. Вместо отображения количества времени, таких как:Сроки эффективности алгоритмов сортировки, но получение неправильного вывода
Bubble Sort: 100
Merge Sort: 45
etc.
Я получаю:
Bubble Sort: -3098
Merge Sort: -3
etc.
Если кто-нибудь может помочь мне понять, почему это происходит, я действительно ценю это. Вот мой исходный код.
static double diffclock(clock_t clock1,clock_t clock2)
{
double diffticks=clock1-clock2;
double diffms=(diffticks)/(CLOCKS_PER_SEC/1000);
return diffms;
}
int main()
{
clock_t begin, end;
for (int n = 1; n<=1000000; n*=10)
{
cerr << n << endl;
int *array = new int[n];
int *temparray = new int[n];
srand((unsigned int)time(0));
for (int i = 0; i < n; i++)
{
array[i] = rand()%1000;
}
begin = clock();
bubbleSort(array, n);
end = clock();
cerr << "Bubble Sort: " << diffclock(begin, end) << endl;
srand((unsigned int)time(0));
for (int i = 0; i < n; i++)
{
array[i] = rand()%1000;
}
begin = clock();
insertionSort(array, n);
end = clock();
cerr << "Insertion Sort: " << diffclock(begin, end) << endl;
srand((unsigned int)time(0));
for (int i = 0; i < n; i++)
{
array[i] = rand()%1000;
}
begin = clock();
mergesort(array, 0, n-1, temparray);
end = clock();
cerr << "Merge Sort: " << diffclock(begin, end) << endl;
srand((unsigned int)time(0));
for (int i = 0; i < n; i++)
{
array[i] = rand()%1000;
}
begin = clock();
quicksort(array, 0, n-1);
end = clock();
cerr << "Quick Sort: " << diffclock(begin, end) << endl;
srand((unsigned int)time(0));
for (int i = 0; i < n; i++)
{
array[i] = rand()%1000;
}
begin = clock();
selectionSort(array, n);
end = clock();
cerr << "Selection Sort: " << diffclock(begin, end) << endl;
}
return 0;
}
С другой стороны, любая помощь будет принята с благодарностью.