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

Как работает метод Пузырька? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа на С++ "Записная книжка" http://www.cyberforum.ru/cpp-beginners/thread394643.html
Ребят помогите)) Нажна программа на С++ "Записная книжка"... может у кого есть уже готовая!!!...в общем помогите) "Программа «Записная книжка». Предназначена для ввода текста с последующим его...
C++ Вводится последовательность целых чисел, 0-конец последовательности. Содержит ли последовательность хотя бы два числа, кратных 3,5,7? Вводится последовательность целых чисел, 0-конец последовательности. Содержит ли последовательность хотя бы два числа, кратных 3,5,7? Именуйте темы осмысленно! http://www.cyberforum.ru/cpp-beginners/thread394638.html
C++ Вводиться последовательность из N целых чисел, найти разность между произведением нечетных чисел и наибольшим среди отрицательных
вводиться последовательность из N целых чисел , найти разность между произведением нечетных чисел и наибольшим среди отрицательных Именуйте темы осмысленно!
C++ Выводит значение "f". Что это значит?
вместо результата выводит "f", незнаю даже как бороться. подскажите в чем причина #include <stdio.h> #include <conio.h> void main () { const int n =7; float a; float s,h,k,m; int i;...
C++ Определить наименьшее число http://www.cyberforum.ru/cpp-beginners/thread394617.html
Вводится последовательность чисел из n-вещественных чисел, определить наиментшее число среди чисел больше 20.
C++ Содержит ли последовательность 3 отрицательных числа Введите последовательность целых чисел, 0-конец последовательности. подробнее

Показать сообщение отдельно
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
30.11.2011, 14:47
мой старый код

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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
 
int main()
{
    int massiv[10];
    bool gate = false;
 
    srand(time(NULL));
 
    for(int i = 0; i < 10; i++)
    {
        massiv[i] = 1 + rand() % 1000;
        std::cout << std::setw(5) << massiv[i];
    }
 
    int count = 0;
    int a;
    int b;
 
    while(!gate)
    {
        a = 0;
        b = 0;
 
        for(; a < 9; a++)
        {
            if(massiv[a] > massiv[a+1])
            {
                massiv[a] += massiv[a+1];
                massiv[a+1] = massiv[a] - massiv[a+1];
                massiv[a] -= massiv[a+1];
            }
            else
            {
                for(; b < 9; b++)
                {
                    if(massiv[b] <= massiv[b+1])
                        count++;
                    else
                    {
                        b = 10;
                        count = 0;
                    }
 
                }
            }
        }
 
        if(count == 9)
            gate = true;
    }
 
    std::cout << std::endl;
 
    for(int i = 0; i < 10; i++)
        std::cout << std::setw(5) << massiv[i];
 
    std::cout << std::endl;
 
    return 0;
}
если сортировать по возрастанию
сравниваются два элемента, если младший больше старшего (i > i+1) они меняются местами и так n-1 раз

Добавлено через 23 часа 51 минуту
если ещё кому нужно
оптимизировал код

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
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
 
void maxOfMassiv(int []);
 
int main()
{
    int mass[10];
 
    enum Sort { DONE, PERFORMED };
 
    Sort sortStatus = PERFORMED;
 
    srand(time(NULL));
 
    for(int i = 0; i < 10; i++)
    {
        mass[i] = 1 + rand() % 100;
        std::cout << std::setw(5) << mass[i];
    }
 
    std::cout << std::endl;
 
    int limit = 8;
 
    while(sortStatus)
    {
        int j = 0;
        int count = 0;
 
        maxOfMassiv(mass);
 
        int max = mass[0];
 
        for(int j = 0; j < limit; j++)
            if(mass[j] > mass[j+1])
            {
                mass[j] += mass[j+1];
                mass[j+1] = mass[j] - mass[j+1];
                mass[j] -= mass[j+1];
                count++;
            }
 
        limit--;
 
        if(!count)
            sortStatus = DONE;
    }
 
    for(int i = 0; i < 10; i++)
        std::cout << std::setw(5) << mass[i];
 
    std::cout << std::endl;
 
    return 0;
}
 
void maxOfMassiv(int massiv[])
{
    static int lim = 9;
 
    int max = massiv[0];
 
    int nTemp = 0;
 
    for(int i = 0; i <= lim; i++)
        if(massiv[i] > max)
        {
            nTemp = i;
            max = massiv[i];
        }
 
    if(nTemp != lim)
    {
        massiv[nTemp] += massiv[lim];
        massiv[lim] = massiv[nTemp] - massiv[lim];
        massiv[nTemp] -= massiv[lim];
    }
 
    lim--;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru