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

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

Войти
Регистрация
Восстановить пароль
 
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
#1

скорость сортировки - C++

02.04.2011, 22:26. Просмотров 458. Ответов 5
Метки нет (Все метки)

вот написал к примеру програмку. работает так

Меню с пунктами:
1.для заполнения матрицы
2.для сортировки
3.для принта
4.для выхода.

после каждого пункта(кроме 4ого) выводит complite. Когда ввожу размера матрицы 1000 и сортирую после заполнения,то это время занимает около минуты. Можно ли как то посчитать сколько именно минут?Точнее чтобы выводились секунды.и после этого complite.
Вот на всякий код
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
void inp(int** x,int n);
void collumn(int** x,int n);
void row(int** x,int n);
void out(int** x,int n);
 
void main()
{
   int n;
   cout<<"n=";
   cin>>n;
    char select;   
        int** x=new int*[n];
        for(int i=0;i<n;i++)
                x[i]=new int[n];
                cout<<"Enter i for input"
                        <<endl<<"Enter c for collumn sort"
                        <<endl<<"Enter r for row sort"
                        <<endl<<"Enter o for out"
                        <<endl<<"Enter e for exit"
                        <<endl;
        for(;;)
        {
            cin>>select;
                switch(select)
                {
            case 'i':
            case'I':
                     inp(x,n);
                     cout<<"complite"<<endl;
                        break;
                case 'c':
            case'C':
                     collumn(x,n);
                     cout<<"complite"<<endl;
                        break;
                case 'r':
            case 'R':
                     row(x,n);
                     cout<<"complite"<<endl;
                        break;
                case 'o':
            case 'O':
                     out(x,n);
                     cout<<"complite"<<endl;
 
                  break;
          
                case 'e':
            case 'E':
                     return;
 
                        default: cout<<"Wrong command!"<<endl;
 
                }
 
        }
        for(int i=0;i<n;i++)
                delete[] x[i];
 
        delete[] x;
 
}
 
 
void inp(int** x,int n)
{
        srand(time(0));
        for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                        *(*(x+i)+j)=rand()%10;
}
 
void out(int** x,int n)
{
        for(int i=0;i<n;i++)
                {
                        for(int j=0;j<n;j++)
                                cout<<*(*(x+i)+j)<<" ";
                        cout<<endl;
        }
        cout<<endl;
}
 
void collumn(int** x,int n)
{
        int buff;
        bool t;
        
          for(int j=0;j<n;j++)
         {
            t=0;
            while(t==0)
               {
               t=1;
                    for(int i=0;i<n-1;i++)
                      if(*(*(x+i)+j)>*(*(x+i+1)+j))
                        {
                            buff=*(*(x+i)+j);
                            *(*(x+i)+j)=*(*(x+i+1)+j);
                            *(*(x+i+1)+j)=buff;
                            t=0;
                        }
               }
        }      
}
 
 
void row(int** x,int n)
{
        int buff;
        bool t;
             for(int i=0;i<n;i++)
          {   
             t=0;
             while(t==0)
                {
                        t=1;
                        for(int j=0;j<n-1;j++)
                          if(*(*(x+i)+j)>*(*(x+i)+j+1))
                            {
                              buff=*(*(x+i)+j);
                              *(*(x+i)+j)=*(*(x+i)+j+1);
                              *(*(x+i)+j+1)=buff;
                              t=0;
                     }  
               }
          }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2011, 22:26     скорость сортировки
Посмотрите здесь:

Сортировки - C++
Есть динамичный массив: #include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int main() { ...

Сортировки - C++
Ребя сделайте пожалуйста одну из двух задачек, очень прошу( не сочтите за наглость, заранее огромное спасибо вам ! 1.В файле input.txt...

Сортировки - C++
Доброго времени суток друзья! Если вас сильно не затруднит, не могли бы вы мне сделать 2 задачки, до завтра сдать нужно ( Ну или одну,...

Си++, Сортировки - C++
Написать программу, осуществляющую блочную сортировку одномерного массива

Сортировки - C++
Вообщем у меня было задание отсортировать по убыванию массивы (заданный рандомно, по убыванию, по возрастанию) Критерий: количество...

Сортировки? - C++
На экзамене нам дали такое задание &quot;Написать функцию сортировки вектора строк.&quot; Подскажите как можно решить эту программу если мы...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
02.04.2011, 23:06     скорость сортировки #2
^Tecktonik_KiLLeR,
C++
1
2
3
4
5
6
7
#include <ctime>
 
//...
const clock_t start = std::clock();
// Действи которое хотите измерить
const double duration = static_cast<double>(clock() - start) / CLOCKS_PER_SEC;
//...
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
03.04.2011, 00:02  [ТС]     скорость сортировки #3
потом duration выводить? а как то по другому?Есть еще методы?
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
03.04.2011, 00:09     скорость сортировки #4
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
потом duration выводить?
Да.
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
а как то по другому?Есть еще методы?
А чем этот не подходит ? Вы вообще пробывали его ?
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
03.04.2011, 00:09  [ТС]     скорость сортировки #5
вот здесь,с кейсами как сделать?нельзя объявить в кейсах. объявляю перед ними а после объявления нельзя переменной присвоить что то
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
void main()
{
   int n;
   cout<<"n=";
   cin>>n;
    char select;   
        int** x=new int*[n];
        for(int i=0;i<n;i++)
                x[i]=new int[n];
                cout<<"Enter i for input"
                        <<endl<<"Enter c for collumn sort"
                        <<endl<<"Enter r for row sort"
                        <<endl<<"Enter o for out"
                        <<endl<<"Enter e for exit"
                        <<endl;
        for(;;)
        {
            cin>>select;
                switch(select)
                {
            case 'i':
            case'I':
                     inp(x,n);
                     cout<<"complite"<<endl;
                        break;
                case 'c':
            case'C':
                     collumn(x,n);
                     cout<<"complite"<<endl;
                        break;
                case 'r':
            case 'R':
                row(x,n);               
                cout<<"complite"<<endl;
                        break;
                case 'o':
            case 'O':
                     out(x,n);
                     cout<<"complite"<<endl;
 
                  break;
          
                case 'e':
            case 'E':
                     return;
 
                        default: cout<<"Wrong command!"<<endl;
 
                }
 
        }
        for(int i=0;i<n;i++)
                delete[] x[i];
        delete[] x;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2011, 00:23     скорость сортировки
Еще ссылки по теме:

Сортировки С++ - C++
Всем доброго времени суток! Не могу понять в чем ошибка,прошу помочь. вот условие задачи: В текстовом файле содержатся записи о...

сортировки - C++
народ помогите нужны программки для 1)сортировки прямым выбором(по убыванию 5&gt;3&gt;1) 2)сортировка двоичной вставкой(по возрастанию 1&lt;3&lt;5)...

сортировки - C++
Можете объяснить что такое сортировка целого массива группировкой с последовательным упорядочиванием битов, и желательно дать алгоритм...

сортировки - C++
помогите пожалуйста написать эти сортировки: пузырек, вставками, шелл, поиск(находишь элемент и возращаешь его индекс)

Скорость выполнения. - C++
Есть консольное приложение, работающее с огромными текстовыми файлами, сравнивает их, читает, записывает и т.д. Судя по диспетчеру...

Скорость кода - C++
Подскажите, пожалуйста, компилятор, который обеспечивает наибольшую скорость выполнения кода.


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

Или воспользуйтесь поиском по форуму:
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
03.04.2011, 00:23     скорость сортировки #6
^Tecktonik_KiLLeR, Можно так зделать
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
void inp(int** x,int n);
void collumn(int** x,int n);
void row(int** x,int n);
void out(int** x,int n);
 
#define START(s) s = clock();
#define FINISH(d, s) d = static_cast<double>(clock() - s) / CLOCKS_PER_SEC;
 
int main()
{
   int n;
   clock_t start;
   double duration;
   cout<<"n=";
   cin>>n;
    char select;
        int** x=new int*[n];
        for(int i=0;i<n;i++)
                x[i]=new int[n];
                cout<<"Enter i for input"
                        <<endl<<"Enter c for collumn sort"
                        <<endl<<"Enter r for row sort"
                        <<endl<<"Enter o for out"
                        <<endl<<"Enter e for exit"
                        <<endl;
        for(;;)
        {
            cin>>select;
                switch(select)
                {
            case 'i':
            case'I':
                     inp(x,n);
                     cout<<"complite"<<endl;
                        break;
                case 'c':
            case'C':
                     START(start);
                     collumn(x,n);
                     FINISH(duration, start);
                     cout<<"complite \ntime = " << duration << endl;
                        break;
                case 'r':
            case 'R':
                     row(x,n);
                     cout<<"complite"<<endl;
                        break;
                case 'o':
            case 'O':
                     out(x,n);
                     cout<<"complite"<<endl;
 
                  break;
 
                case 'e':
            case 'E':
 
                        default: cout<<"Wrong command!"<<endl;
 
                }
 
        }
        for(int i=0;i<n;i++)
                delete[] x[i];
 
        delete[] x;
 
}
 
 
void inp(int** x,int n)
{
        srand(time(0));
        for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                        *(*(x+i)+j)=rand()%10;
}
 
void out(int** x,int n)
{
        for(int i=0;i<n;i++)
                {
                        for(int j=0;j<n;j++)
                                cout<<*(*(x+i)+j)<<" ";
                        cout<<endl;
        }
        cout<<endl;
}
 
void collumn(int** x,int n)
{
        int buff;
        bool t;
 
          for(int j=0;j<n;j++)
         {
            t=0;
            while(t==0)
               {
               t=1;
                    for(int i=0;i<n-1;i++)
                      if(*(*(x+i)+j)>*(*(x+i+1)+j))
                        {
                            buff=*(*(x+i)+j);
                            *(*(x+i)+j)=*(*(x+i+1)+j);
                            *(*(x+i+1)+j)=buff;
                            t=0;
                        }
               }
        }
}
 
 
void row(int** x,int n)
{
        int buff;
        bool t;
             for(int i=0;i<n;i++)
          {
             t=0;
             while(t==0)
                {
                        t=1;
                        for(int j=0;j<n-1;j++)
                          if(*(*(x+i)+j)>*(*(x+i)+j+1))
                            {
                              buff=*(*(x+i)+j);
                              *(*(x+i)+j)=*(*(x+i)+j+1);
                              *(*(x+i)+j+1)=buff;
                              t=0;
                     }
               }
          }
}
Yandex
Объявления
03.04.2011, 00:23     скорость сортировки
Ответ Создать тему
Опции темы

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