我想找到排序算法的执行时间。 我在算法代码之前写过
start_time = clock();
算法之后
end_time = clock;
time = (double)(end_time - start_time)/CLOCKS_PER_SEC;
问题是我在一个包含5个元素的数组上尝试了它,看看它是如何工作的,我得到的时间是4201.43600秒,这对于这个nr是不可能的。元素。
有人可以告诉我,我做错了什么吗? 该函数的代码是
void ShakerSort(int A[], int n, int (*compare)(int a, int b), int* compare_nr, int* swap_nr, double* time)
{
clock_t start_time, end_time;
int i, swapped, begin, end;
*compare_nr = 0;
*swap_nr = 0;
swapped = 1;
begin = -1;
end = n-1;
start_time = clock();
while (swapped) {
swapped = 0;
begin += 1;
for (i = begin; i < end; i++) {
*compare_nr +=1;
if ((*compare)(A[i], A[i+1])) {
swap(&A[i], &A[i+1]);
swapped = 1;
*swap_nr += 1;
}
}
if (!swapped) break;
swapped = 0;
end -= 1;
for (i = end; i > begin-1; i--) {
*compare_nr +=1;
if ((*compare)(A[i], A[i+1])) {
swap(&A[i], &A[i+1]);
swapped = 1;
*swap_nr += 1;
}
}
}
end_time = clock();
*time = (double)(end_time - start_time)/CLOCKS_PER_SEC;
}
A是包含元素的数组
n是nr。元素
(* compare)是比较,升序或降序的方式
compare_nr是nr。元素比较
swap_nr是nr。交换掉了
时间是执行功能的时间