Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Un_artist
0 / 0 / 0
Регистрация: 14.09.2012
Сообщений: 7
#1

Время сортировки - C++

05.09.2013, 10:36. Просмотров 454. Ответов 4
Метки нет (Все метки)

Добрый день!

Помогите, пожалуйста, со следующей задачей. Есть задание: отсортировать массив и замерить время сортировки.
Сделал:

C++
1
2
3
4
5
6
7
int main()
{
 DWORD start = GetTickCount();
  Selection_Sort(size_of_array, myarray); 
  DWORD end = GetTickCount();
  cout << end - start << " ms" << endl;
}
Да, время мне нужно измерять именно этой функцией - это часть задания.
Вопрос мой такой: почему каждый раз получается разное время?
И еще: пробовал написать быструю сортировку - и тоже измерил время. Я понимаю, что она самая быстрая, но при любом запуске программы время всегда равно нулю - это нормально?

Спасибо за помощь - с меня "спасибки".
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2013, 10:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Время сортировки (C++):

Время сортировки - C++
for(int i(0); i &lt; K; i++){ cout &lt;&lt; &quot;\n \n Номер сортировки : &quot; &lt;&lt; i + 1 &lt;&lt; &quot;\n&quot;; Array(mas); unsigned int start_time3 =...

Время выполнения сортировки - C++
Всем доброго времени суток. Дело такое: задача стоит оценить сортировки по критерию время. Ну я написал нужные сортировки и пытаюсь...

Время работы сортировки - C++
Нужно вычислить время работы сортировки, но всегда получается ноль. Что неверно??? #include &lt;stddef.h&gt; #include &lt;iostream&gt; ...

Время сортировки на разных языках - C++
Есть алгоритм сортировки слиянием Подскажите, почему сортировка на C++, происходит гораздо дольше, чем на C# void MergeSort(vector&lt;int&gt;...

Алгоритмы сортировки. Время выполнения - C++
Написал программу которая вычисляет время выполнения алгоритмов для среднего случая. Нужно сделать еще для лучшего и худшего случая. Для...

Как вычислить время сортировки? - C++
Есть программа сортировки пузырьком. Нужно чтобы после сортировки выводилось за сколько секунд выполнилась сортировка, не считая того...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,370
05.09.2013, 11:16 #2
Система, я так понимаю, вин?

Windows по-любому не является системой реального времени. Это во-первых. В любые замеры времени будет вмешиваться ядро - т.е. в любой непредсказуемый момент времени диспетчер ядра может прервать выполнение твоей функции Selection_Sort и отдать квант времени либо любому другому приложению, либо ядру системы.... а затем, когда сторонний процесс что-то сделал (а сколько на это ушло времени? процесс-то сторонний...), продолжить выполнение функции. Поэтому каждый раз и получается разное время.
Во-вторых, ежели мой склероз мне не изменяет, хотя заявленная точность функции GetTickCount - 1 мс, реально же дискретность отсчетов порядка 55 мс. Т.е. если быстрая сортировка выполняется менее, чем за 55 мс, ты будешь получать в замере ноль.
Я думаю так (с) В.Пух
1
Somebody
2789 / 1603 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
05.09.2013, 12:52 #3
Можно попробовать QueryPerformanceFrequency + QueryPerformanceCounter и поставить высокий приоритет процессу. Конечно, это не верх совершенства, но на такое время уже более-менее можно смотреть.
Цитата Сообщение от Un_artist Посмотреть сообщение
пробовал написать быструю сортировку - и тоже измерил время. Я понимаю, что она самая быстрая
Не лучше пузырька в худшем случае...
0
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,370
05.09.2013, 12:55 #4
Somebody, там по заданию время нужно измерять именно функцией GetTickCount......
0
Somebody
2789 / 1603 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
05.09.2013, 12:58 #5
Не заметил. Тогда надо в цикле запускать много раз и брать среднее.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2013, 12:58
Привет! Вот еще темы с ответами:

Засечь время выполнения пирамидальной сортировки - C++
мне нужно засечь время выполнения алгоритма сортировок, и у меня не выходит только с одной - с пиромидальной. программа на c++ код ниже....

Как измерить время сортировки массива? - C++
Как сделать таймер, чтоби измерял время сортировки массива?

Подсчёт время работы алгоритма сортировки - C++
Пытаюсь посчитать время работы алгоритма в миллисекундах, но постоянно выходит минусовое число. Как написать правильно? start_time =...

Как вывести время сортировки на екран - C++
Добрый всем вечер! Имеется одна проблема в создании программы. Подскажите как вывести на экран в &quot;с++&quot; или &quot;с&quot; время сортировки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.09.2013, 12:58
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru