0
Ich möchte meine Insertion sortieren. Wenn ich den Code wie folgt es funktioniert, aber es druckt einmal für jede Art in der Schleife (weil es in der Schleife ist):Warum gibt die C++ Uhr unterschiedliche Werte zurück?
clock_t start;
double duration;
start = clock();
int j, temp;
for (int i = 0; i < NumberOfLines; i++) {
j = i;
while (j > 0 && arr[j - 1] < arr[j]) {
temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
j--;
}
duration = (clock() - start)/(double)CLOCKS_PER_SEC;
cout<<"Sorting took: "<< duration<<" seconds"<<'\n';
}
duration = (std::clock() - start)/(double)CLOCKS_PER_SEC;
cout << "Please Work: " << duration << " seconds" << '\n';
Aber wenn ich die cout
innerhalb der Schleife Kommentar, gibt es 0 Zeit genommen :
duration = (clock() - start)/(double)CLOCKS_PER_SEC;
//cout<<"Sorting took: "<< duration<<" seconds"<<'\n';
}
duration = (std::clock() - start)/(double)CLOCKS_PER_SEC;
cout << "Please Work: " << duration << " seconds" << '\n';
Warum?
Optimierung. Sortiert Array nach Schleife, um dies zu verhindern. –
Ich würde wetten, weil Ihre Schleife in viel weniger Zeit ausgeführt wird, als es dauert, um die Zeit zu erfassen und vor allem an den Stream zu senden, der mit der Konsole oder einer Datei verbunden ist. Und normalerweise ist die Granularität der Uhr nicht so gut, um ein paar hundert Iterationen einer einfachen Schleife zu erfassen. –
@yurikilochek Ja, das könnte das sein, was ich tun muss. – cparks10