Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
2e1553ce
1 / 1 / 2
Регистрация: 16.12.2011
Сообщений: 47
#1

Определить время, за которое сортируется массив - C++

24.03.2012, 20:25. Просмотров 481. Ответов 7
Метки нет (Все метки)

Подскажите как узнать время за которое отсортировался массив (mas)
Внизу программы где используется InsertSort и массив уходит на сортировку(чтобы после в консоле
вывелось на экран время сортировки)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
using namespace std;
const int MAX=1000;
 ////////////////////////////////////////////////////////////////////////////////
void insertSort(int* a, int size) 
{
    int i, j, tmp;
    for (i = 1; i < size; ++i) // цикл проходов, i - номер прохода
    {
        tmp = a[i];     
            for (j = i - 1; j >= 0 && a[j] > tmp; --j) // поиск места элемента в готовой последовательности 
            a[j + 1] = a[j];    // сдвигаем элемент направо, пока не дошли
        a[j + 1] = tmp; // место найдено, вставить элемент    
    }
}
/////////////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
    int mas[MAX];
    for(int i=0; i<MAX; i++)
        mas[i] = 0+rand()%1000;
    for(int i=0;i<MAX;i++)
    {
        if(i%10==0)
        {
        cout<<endl;
        }
        cout<<" "<<mas[i];
    }
    insertSort(mas,MAX);
    for(int i=0;i<MAX;i++)
    {
        if(i%10==0)
        {
        cout<<endl;
        }
        cout<<" "<<mas[i];
    }
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2012, 20:25
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определить время, за которое сортируется массив (C++):

Определить время, через которое встретятся два тела, равноускоренно движущиеся навстречу друг другу
11. Определить время, через которое встретятся два тела, равноускорен¬но...

Определить наименьшее время, которое должно пройти до того момента, когда часовая и минутная стрелки совпадут
1) Даны целые числа M и N (0&lt;M&lt;=12, 0&lt;=N&lt;=60), указывающие момент времени: «M...

Зная квалификацию игроков определить общее число подтягиваний, которое совершат оба игрока за время игры
Пусть квалификация первого игрока равна A, а квалификация второго равна B....

Определить наименьшее время, которое должно пройти до того момента, когда часовая и минутная стрелка на циферблате совпадут
помоги, буду очень благодарна) Записать тернарную операцию для решения данной...

Требуется по начальному расположению деталей на первом конвейере определить время, через которое все детали будут изготовлены
Совсем не могу разобраться в программе помогите пожалуйста. Имеются три...

Массив не сортируется
Здравствуйте. Программа не сортирует массив, не могу разобраться в чем...

7
zss
Модератор
Эксперт С++
6959 / 6521 / 4139
Регистрация: 18.12.2011
Сообщений: 17,209
Завершенные тесты: 1
24.03.2012, 20:31 #2
Вот пример из MS Help
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// crt_clock.c
// This example prompts for how long
// the program is to run and then continuously
// displays the elapsed time for that period.
//
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void sleep( clock_t wait );
 
int main( void )
{
   long    i = 6000000L;
   clock_t start, finish;
   double  duration;
 
   // Delay for a specified time.
   printf( "Delay for three seconds\n" );
   sleep( (clock_t)3 * CLOCKS_PER_SEC );
   printf( "Done!\n" );
 
   // Measure the duration of an event.
   printf( "Time to do %ld empty loops is ", i );
   start = clock();
   while( i-- ) 
      ;
   finish = clock();
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "%2.1f seconds\n", duration );
}
 
// Pauses for a specified number of milliseconds.
void sleep( clock_t wait )
{
   clock_t goal;
   goal = wait + clock();
   while( goal > clock() )
      ;
}
0
LVV
98 / 102 / 39
Регистрация: 15.02.2010
Сообщений: 399
24.03.2012, 22:47 #3
C++
1
2
3
4
5
6
7
8
9
#include <time.h>
.....................
clock_t start = 0,end = 0;
start = clock(); // начинаем замер времени
.........................................................
//процесс, длительность коротого измеряем
........................................................
end=clock(); // заканчиваем замер времени
cout << end - start;//вывод затраченного времени в милисекундах
1
2e1553ce
1 / 1 / 2
Регистрация: 16.12.2011
Сообщений: 47
25.03.2012, 00:59  [ТС] #4
Цитата Сообщение от LVV Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
#include <time.h>
.....................
clock_t start = 0,end = 0;
start = clock(); // начинаем замер времени
.........................................................
//процесс, длительность коротого измеряем
........................................................
end=clock(); // заканчиваем замер времени
cout << end - start;//вывод затраченного времени в милисекундах
А в чем измеряется?
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
25.03.2012, 01:28 #5
2e1553ce, не совсем, там в тактах.
C++
1
2
3
4
5
6
7
8
9
#include <time.h>
.....................
clock_t start = 0,end = 0;
start = clock(); // начинаем замер времени
.........................................................
//процесс, длительность коротого измеряем
........................................................
end=clock(); // заканчиваем замер времени
cout << (double) (end - start) / CLOCKS_PER_SEC;
1
LVV
98 / 102 / 39
Регистрация: 15.02.2010
Сообщений: 399
25.03.2012, 22:19 #6
neske, Вы совершенно правы.
Давно хтел спросить... может Вы разьясните.
Почему, например, такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
clock_t start = 0,end = 0;
 
start = clock(); // начинаем замер времени
 
//.........................................................
for (long i=0; i<100000000; i++);
//........................................................
 
end=clock(); // заканчиваем замер времени
 
cout << end - start << endl;
cout << (double) (end - start) / CLOCKS_PER_SEC << endl;
 
system ("pause");
return 0;
}
выведет:
225
0.225
(или что-то похожее)
Почему так?
Если CLOCKS_PER_SEC определяет количество тактов системных часов в секунду, то от чего зависит это количество тактов системных часов в секунду? От операционной системы?
Тогда выходит, что в Windows количество таких тактов в секунду - тысяча.
То есть end - start - это интервал времени в тысячных долях секуны (в Windows, разумеется)...
????
Где ошибка в моих рассуждениях?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
26.03.2012, 10:53 #7
Цитата Сообщение от zss Посмотреть сообщение
while( goal > clock() ) ;
За такое бьют. Долго и больно.

C++
1
::Sleep( x );
0
Kuzia domovenok
2212 / 1981 / 443
Регистрация: 25.03.2012
Сообщений: 6,965
Записей в блоге: 1
26.03.2012, 11:08 #8
Цитата Сообщение от Deviaphan Посмотреть сообщение
За такое бьют. Долго и больно.
Побей Microsoft и Билла Г
0
26.03.2012, 11:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2012, 11:08
Привет! Вот еще темы с решениями:

Почему не сортируется массив?
Доброго времени суток уважаемые Форумчане,нужно отсортировать в порядке...

Почему не сортируется массив?
using namespace std; void scan(int * mass) { for( int i = 0; i &lt; 10; i++)...

Почему не сортируется массив?
#include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; int...

Не сортируется массив пузырьком
Не получается нормально отсортировать массив( И оператор выбора не работает,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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