почему алгоритм сортировки занимает ноль секунд - PullRequest
1 голос
/ 18 октября 2011

вот алгоритм

#include<iostream>
#include<Windows.h>
#include<time.h>
using namespace std;
int main(){
    int a[10]={12,3,5,2,7,80,10,1,16,30};
    long ts,te;
    srand(::GetTickCount());
    ts=clock();
     for (int i=0;i<10;i++){
       for (int j=9;j>i;j--){

                  if (a[j]<a[j-1]){

                   int t=a[j];a[j]=a[j-1];a[j-1]=t;

                  }

       }



     }

       te=clock();
       cout<<" time elapsed "<<te-ts<<endl;




 return 0;
}

но я удивлен, потому что он дает мне ноль в качестве вывода, я измеряю время, прошедшее с начала кода до его завершения, и почему? Мой компьютер не так называется суперкомпьютером и что не так в этом фрагменте кода?

Ответы [ 3 ]

7 голосов
/ 18 октября 2011

Если вы не использовали перфокарты для написания своей программы, вы не должны удивляться, что для сортировки 10 чисел требуется меньше одного тика.Если вам нужен более точный профиль вашего кода, используйте миллисекунды, которые должны дать вам лучшее представление.

Самая внутренняя инструкция в циклах выполняется 100 раз - это ничто по сравнению даже с младшим процессоромНастоящее время.

РЕДАКТИРОВАТЬ: я протестировал код с 100000 чисел, это 10 ^ 10 итераций внутри цикла for, и это заняло всего 3 секунды.

1 голос
/ 18 октября 2011

Вас не должно удивлять, что сортировка десяти чисел занимает меньше одного тика времени.Повторите сортировку много раз, чтобы получить значимые тайминги.

Моему компьютеру требуется 0,18 секунды для запуска 1 миллиона повторений цикла с точно таким же начальным массивом.Поэтому каждый вид занимает около 180 микросекунд.Это слишком хорошо для измерения с парой clock() вызовов.

0 голосов
/ 18 октября 2011

Вы можете получить более точное измерение времени, используя таймер высокого разрешения.см http://www.songho.ca/misc/timer/timer.html Время, которое вы пытаетесь измерить листья в диапазоне микросекунд!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...