我在数组中随机创建了30.000个数字。然后我正常排序这些数字。之后,我反转,并应用插入排序算法。看看;
begin = clock();
insertion(dizi, boyut);
end = clock();
printf("\n time cost: %f z... ", (double)(end - begin) / CLOCKS_PER_SEC);
当我打印它时说0.000000秒,这是不可能的。 我哪里弄错了?
这是我的插入排序代码
void insertion(int dizi[], int boyut)
{
int i, j, temp;
for(i = 1; i < boyut; i++)
{
temp = dizi[i];
j = i-1;
while((temp < dizi[j] && j >= 0))
{
dizi[j+1] = dizi[j];
j--;
}
dizi[j+1] = temp;
}
}
答案 0 :(得分:1)
错误是微妙的:编译器观察到你对该数组进行了大量写操作,但是从不对它做任何事情,因此它有助于删除该部分以使代码运行得更快。在这种情况下,要快得多。
为了解决这个问题,在对数据进行排序后,从数组中打印一个随机元素,以便使用&#34;使用&#34;。如果打印出一个随机元素,编译器就知道它需要对整个数组进行实际排序,并且不能作弊。