我在C:
中编写了这段代码#include <stdlib.h>
#include <time.h>
#include <stdio.h>
int main () {
int vector1[50000];
int n, m, c, i, j;
int size = 50000;
int aux;
clock_t starttime, finaltime;
long double elapsedtime;
for (m = 1; m <= 10000; m++){
starttime = clock();
for (c = 0; c <= 49999; c++) {
vector1[c] = rand() % 5000001;
}
for(i= size -1; i >= 1; i--) {
for(j=0; j<i ; j++) {
if(vector1[j]>vector1[j+1]) {
aux = vetor1[j];
vector1[j] = vector1[j+1];
vector1[j+1] = aux;
}
}
}
finaltime = clock();
tempoGasto = (finaltime-starttime);
printf("time in seconds: %Lf \n", elapsedtime);
}
return 0;
}
并且,在编译时,代码窗口:块不显示任何内容
注意:我正在使用Windows 7。 该代码应该对50000个插槽的向量进行排序,填充随机整数10000次,并显示每次程序运行时经过的时间
答案 0 :(得分:2)
您的代码调用未定义的行为。见这里 -
for (c = 1; c <= 50000; c++) {
vetor1[c] = rand() % 5000000 + 1;
}
这也会访问数组50000
的索引vector1
,但你没有索引50000
,因为你已经声明了这个 -
int vetor1[50000];
您拥有0 to 49999
的索引。所以首先改变这个条件。