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

Сравнение алгоритмов сортировок - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ 2 int to double http://www.cyberforum.ru/cpp-beginners/thread655159.html
Здравствуйте. Вот такой вопрос. В памяти хранится 2 int числа - рубли и копейки, при выводе выводятся через запятую. В задании нужно поделить введенное количество денег на double. Вопрос - как мне переделать два int числа в double, то есть если а=355, в=54, то требуемое мне число double должно иметь вид 355,54. Спасибо.
C++ Имитация движения простых геометрических объектов Помогите написать программу в visual studio c++ Нужно разработать программу, имитирующую движение таких объектов как круг, треугольник, квадрат, прямоугольник. Нужно ещё предусмотреть возможность движения как одного, так и нескольких объектов одновременно. http://www.cyberforum.ru/cpp-beginners/thread655151.html
Дан массив х1,.,х8 целых чисел C++
Почему выдает ошибку ? #include <iostream> #include <conio.h> #include <math.h> #include <stdlib.h> using namespace std; int main() { int n,j,i,k;
C++ класс Timer
создать класс timer который через установленный интервал времени вызывает заданную функцию. Вот такая вот задача, только никак даже сообразить не могу, как это возможно реализовать?
C++ Задача: игра "Поймать парасёнка" http://www.cyberforum.ru/cpp-beginners/thread655087.html
Описание "Поймать парасёнка" - один из видов игры в карты. Допустим за игральным столом 4 игрока. Ваша задача посчитать итоговый результат этих игроков, следуя правилам подсчёта указанным ниже: S, H, D, C - соответственно пики, червы, бубны и трефы. Цифры от 1 до 13 соответственно A, 2, ..., Q, K. Например, H1 это червы A, S13 это пики K.
C++ Как обучиться программированию? Всем привет! Кто может научить, все обьяснить по С++. Хочу выучить, помогите. Откликнитесь пожалуйста! подробнее

Показать сообщение отдельно
WriterMix
1 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 68

Сравнение алгоритмов сортировок - C++

20.09.2012, 19:55. Просмотров 1141. Ответов 4
Метки (Все метки)

Добрый день всем!
Интересует вопрос об оптимизации алгоритмов сортировки: пузирька, пузирька оптимиз. и Шейкера. Подскажите:
1) Как сделать так, чтоб обрабативались одни и те же генерируемие числа? (Сортировка возрастает в 2 раза (данный код) когда в каждом case генерируються числа. Например, сортировка 50.000 елементов должна происходить чуть больше 5 сек, а у меня больше 10 сек.)
2) Правильно ли написан код сортировки Пузирька-оптимизация и Шейкера?
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
141
142
//PZAS-21-2012
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
using namespace std;
 
void bubbleSortS(int* m, int n)
{
 
     for(int i = n - 1; i >= 1; i--)
       for(int j = 0; j < i; j++)
       {
               if(m[j] > m[j+1])
               {
                       int foo = m[j];
                       m[j] = m[j+1];
                       m[j+1] = foo;
               }
       }
 
}
 
void bubbleSortM(int *m, int n)
    {
        for(int i=0; i<n; i++)
        {  
          bool flag = false;
           for(int j=0; j<n-i-1; j++)
           {
              if(m[j]>m[j+1])
              {
                flag = true;
                 int temp = m[j+1];
                 m[j+1] = m[j];
                 m[j] = temp;
              }
           }
          
          if(!flag){ 
             return; 
          } 
       }
}
 
void Shaker(int *m, int n)
{
int i,left,right,b;
int t;
for(right=n-1,left=0,b=-1;b!=0;)//устанавливаем правую и левую границу
{
b=0;
    for(i=left;i<right;i++)//двигаемся с лева на право
    {
        if(m[i]>m[i+1])
        {t=m[i];m[i]=m[i+1];m[i+1]=t;b=i;}
    }
    right=b;
    for(i=right;i>left;i--)//двигаемся с права на лево
    {
        if(m[i-1]>m[i])
        {t=m[i];m[i]=m[i-1];m[i-1]=t;b=i;}
    }
    left=b;
 
}
}
 
int main ()
{
    //cout << "Cin Numer of Elements: ";
    int choise, choise2;
    int n = 50000;
    //cin >> n;
do 
{
cout<<"Choose: Bubble Sort Standart (1), Modify (2), Shaker (3): ";
cin>>choise;
switch(choise)
{
case 1:
{
    int* m;
    m = new int[n];
    srand(time(NULL));
    for(int i=0;i!=n;i++)
    m[i] = rand()%(n+1);
    cout << endl;
clock_t time;
time = clock();
bubbleSortS (m, n);
time = clock() - time;
cout<<endl<<endl<<endl;
printf("%f", (double)time/CLOCKS_PER_SEC); //время выполнения "каких-то действий"
cout<<endl<<endl<<endl; 
break;
}
case 2:
{
    int* m;
    m = new int[n];
    srand(time(NULL));
    for(int i=0;i!=n;i++)
    m[i] = rand()%(n+1);
    cout << endl;
clock_t time;
time = clock();
bubbleSortM (m, n);
time = clock() - time;
cout<<endl<<endl<<endl;
printf("%f", (double)time/CLOCKS_PER_SEC); //время выполнения "каких-то действий"
cout<<endl<<endl<<endl;
break;
}
case 3:
{
    int* m;
    m = new int[n];
    srand(time(NULL));
    for(int i=0;i!=n;i++)
    m[i] = rand()%(n+1);
    cout << endl;
clock_t time;
time = clock();
Shaker(m, n);
time = clock() - time;
cout<<endl<<endl<<endl;
printf("%f", (double)time/CLOCKS_PER_SEC); //время выполнения "каких-то действий"
cout<<endl<<endl<<endl;
break;
} 
}
cout<<"Do you want to choose other algorithm? (Yes - 1; No - 0) ";
cin>>choise2;
}
while (choise2 == 1);
    //cout << "After sort" << endl;
    //for(int i = 0; i < n; i++)
    //cout << m[i] << ' ';
    cin.get();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru