测试是创建一个大小为 10000 的数组。使用值 10000 将其初始化为 1,然后使用冒泡排序来反转顺序。由于冒泡排序是最糟糕的排序之一,这应该需要相当长的时间. 但是,时序的分辨率是有限的。
解决方案是把任务放在一个循环中,重复一千或一百万次——无论需要什么让数字达到你可以处理的程度。我的代码中出现错误。请在下面查看我的代码。
以下命令在 linux 上运行:
gcc -o sort sort.c -O2
time ./sort
gcc -m32 -o sort sort.c -O2 -march=pentium4
time ./sort
#include <stdio.h>
void bubbleSort(int numbers[], int array_size)
{
int i, j, temp;
for (i =0; i <array_size; i++)
{
for (j =0; j<array_size-1; j++)
{
if (numbers[j] > numbers[j+1]) {
temp = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] = temp;
}
}
}
}
int main(void)
{
int array[10000];
int i;
for(i=10000;i!=0;i--)
{
array[i-1]=i;
}
bubbleSort(array,10000);
for(i=0;i<10000;i++)
{
printf("%d\n",array[i]);
}
return 0;
}