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

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

Войти
Регистрация
Восстановить пароль
 
 
Виктор27
10 / 10 / 2
Регистрация: 21.11.2013
Сообщений: 299
#1

Пузырьковая сортировка - C++

18.04.2014, 18:05. Просмотров 599. Ответов 20
Метки нет (Все метки)

Здравствуйте. Есть код, который сортирует методом пузырька по строчкам, что мне поменять, чтобы была сортировка по столбцам начиная с первого.? Заранее спасибо.

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
#include <iostream>
#include <iomanip>
 
using namespace std;
 
void main (void)
{
    setlocale(LC_ALL, "Rus");
    const int n = 3, m = 3;
    int c = 0;
    int mas[n][m];
    mas[0][0] = 5;
    mas[0][1] = 12;
    mas[0][2] = 7;
 
 
    mas[1][0] = 17;
    mas[1][1] = 25;
    mas[1][2] = 18;
    
    mas[2][0] = 20;
    mas[2][1] = 15;
    mas[2][2] = 30;
 
    cout << "Исходный массив:" << endl << endl;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<m; j++)
        {
            cout << mas[i][j] << "\t";
        }
        cout << endl;
    }
    cout << endl << endl;
 
    cout << "После пузырьковай сортировки:" << endl << endl;
 
    for (int k=0; k<n; k++)
    {
        for (int l=0; l<m; l++)
        {
            for (int j=0; j<n; j++)
            {
                for (int i=0; i<m; i++)
                {
                    if (i+1 == n && j+1 == m)
                    {
                        continue;
                    }
                    else
                    {
                        if (j+1 == n && mas[i][j] > mas[0][j+1])
                        {
                            int t = mas[i][j];
                            mas[i][j] = mas[0][j+1];
                            mas[0][j+1] = t;
                            c=c+1;
                        }
                        else
                        {
                            if (mas[i][j] > mas[j+1][i])
                            {
                                int t = mas[i][j];
                                mas[i][j] = mas[j+1][i];
                                mas[j+1][i] = t;
                                c=c+1;
                            }
                        }
                    }
                }
            }           
        }       
    }
 
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<m; j++)
        {
            cout << mas[i][j] << "\t";
        }
        cout << endl;
    }
    cout << endl;
    cout << "Колличество перестановок = " << c << endl << endl;
    
    system("Pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2014, 18:05     Пузырьковая сортировка
Посмотрите здесь:

Пузырьковая сортировка - C++
Здравствуйте! Необходимо осуществить пузырьковую сортировку в столбцах двумерного массива. Но только сортировка должна быть среди...

Пузырьковая Сортировка - C++
Описать структуру с именем Train, содержащую следующие поля: Point (название пункта назначения), Number (номер поезда), Time (время...

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

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

пузырьковая сортировка - C++
Задача не сложная, но у меня нет времени ее решать: дан одномерный массив, нужно сделать пузырьковую сортировку по нему

Пузырьковая сортировка - C++
Помогите исправить не сортирует массив.Еще должен считать кол-во шагов прохода цикла. #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include...

Пузырьковая сортировка - C++
Посмотрите что не так дана таблица стран с кол-вом золотых, серебряных медалей нудно отсортировать страны в порядке убывания количества...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
18.04.2014, 18:18     Пузырьковая сортировка #2
Этот код не работает, и вызывает проблемы со стеком.

Пузырьковая сортировка массива a[m][n]:
C++
1
2
3
4
5
6
7
8
9
for (int stolbets = 0; stolbets < n; stolbets++)
    for (int i = m-1; i > 0; i--)
        for (int j = 0; j < i; j++)
            if (a[j][stolbets] > a[j+1][stolbets])
            {
                tmp = a[j][stolbets];
                a[j][stolbets] = a[j+1][stolbets];
                a[j+1][stolbets] = tmp;
            }
Виктор27
10 / 10 / 2
Регистрация: 21.11.2013
Сообщений: 299
18.04.2014, 18:27  [ТС]     Пузырьковая сортировка #3
Код должен выглядеть вот так?
#include <iostream>
#include <iomanip>

using namespace std;

void main (void)
{
setlocale(LC_ALL, "Rus");
const int n = 3, m = 3; // Размерность массива
int c = 0;
int mas[n][m];
mas[0][0] = 5;
mas[0][1] = 12;
mas[0][2] = 7;

mas[1][0] = 17;
mas[1][1] = 25;
mas[1][2] = 18;

mas[2][0] = 20;
mas[2][1] = 15;
mas[2][2] = 30;

cout << "Исходный массив:" << endl << endl;
for (int i=0; i<n; i++)
{
for (int j=0; j<m; j++)
{
cout << mas[i][j] << "\t";
}
cout << endl;
}
cout << endl << endl;

cout << "После пузырьковай сортировки:" << endl << endl;

for (int stolbets = 0; stolbets < n; stolbets++)
{
for (int i = m-1; i > 0; i--)
{
for (int j = 0; j < i; j++)
if (a[j][stolbets] > a[j+1][stolbets])
{
tmp = a[j][stolbets];
a[j][stolbets] = a[j+1][stolbets];
a[j+1][stolbets] = tmp;
}
}

}
for (int j=0; j<m; j++)
{
for (int i=0; i<n; i++)
{
cout << mas[i][j] << "\t";
}
cout << endl;
}
cout << endl;
cout << "Колличество перестановок = " << c << endl << endl;

system("Pause");
}

Но, так тоже не работает((
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
18.04.2014, 18:34     Пузырьковая сортировка #4
Вы ошибки-то читайте, там много чего полезного написано обычно.

Добавлено через 42 секунды
Как минимум переменная tmp не объявлена. И переменная c не изменяется, кстати.

Добавлено через 1 минуту
А кроме этого да, примерно так все и выглядит.

Когда код вставляете, нажимайте кнопку С++, это где сообщение пишете, чуточку выше, и между спецификаторами вставляйте код.
Виктор27
10 / 10 / 2
Регистрация: 21.11.2013
Сообщений: 299
18.04.2014, 18:41  [ТС]     Пузырьковая сортировка #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
56
57
58
59
60
61
#include <iostream>
#include <iomanip>
 
using namespace std;
 
void main (void)
{
    setlocale(LC_ALL, "Rus");
    const int n = 3, m = 3;    // Размерность массива
    int mas[n][m];
    mas[0][0] = 5;
    mas[0][1] = 12;
    mas[0][2] = 7;
 
    mas[1][0] = 17;
    mas[1][1] = 25;
    mas[1][2] = 18;
    
    mas[2][0] = 20;
    mas[2][1] = 15;
    mas[2][2] = 30;
 
    cout << "Исходный массив:" << endl << endl;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<m; j++)
        {
            cout << mas[i][j] << "\t";
        }
        cout << endl;
    }
    cout << endl << endl;
 
    cout << "После пузырьковай сортировки:" << endl << endl;
 
for (int stolbets = 0; stolbets < n; stolbets++)
{
    for (int i = m-1; i > 0; i--)
    {
        for (int j = 0; j < i; j++)
            if (mas[j][stolbets] > mas[j+1][stolbets])
            {
                int tmp = mas[j][stolbets];
                mas[j][stolbets] = mas[j+1][stolbets];
                mas[j+1][stolbets] = tmp;
            }
    }
 
}
    for (int j=0; j<m; j++)
    {
        for (int i=0; i<n; i++)
        {
            cout << mas[i][j] << "\t";
        }
        cout << endl;
    }
    cout << endl;
    
    system("Pause");
}
newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
18.04.2014, 18:53     Пузырьковая сортировка #6
Виктор27, вот..вроде сортирует))) хз что у вас там с сортировкой она вроде все-таки неправильно сортирует, но самое главное, что вы в конце массив неправильно выводите!
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
#include <iostream>
#include <iomanip>
 
using namespace std;
 
void main (void)
{
    setlocale(LC_ALL, "Rus");
    const int n = 3, m = 3;    // Размерность массива
    int mas[n][m];
    mas[0][0] = 5;
    mas[0][1] = 12;
    mas[0][2] = 7;
 
    mas[1][0] = 17;
    mas[1][1] = 25;
    mas[1][2] = 18;
    
    mas[2][0] = 20;
    mas[2][1] = 15;
    mas[2][2] = 30;
 
    cout << "Исходный массив:" << endl << endl;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<m; j++)
        {
            cout << mas[i][j] << "\t";
        }
        cout << endl;
    }
    cout << endl << endl;
 
    cout << "После пузырьковай сортировки:" << endl << endl;
 
    /*for (int stolbets = 0; stolbets < n; stolbets++)
    {
        for (int i = m-1; i > 0; i--)
        {
            for (int j = 0; j < i; j++)
                if (mas[j][stolbets] > mas[j+1][stolbets])
                {
                    int tmp = mas[j][stolbets];
                    mas[j][stolbets] = mas[j+1][stolbets];
                    mas[j+1][stolbets] = tmp;
                }
        }
 
    }*/
    for (int i=0;i<n;i++) {
        for (int j=0; j<m-1; j++)
        {
            if (mas[i][j]>mas[i][j+1]) {
                int x=mas[i][j];
                mas[i][j]=mas[i][j+1];
                mas[i][j+1]=x;
            }
        }
    }
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<m; j++)
        {
            cout << mas[i][j] << "\t";
        }
        cout << endl;
    }
    cout << endl;
    
    system("Pause");
}
Виктор27
10 / 10 / 2
Регистрация: 21.11.2013
Сообщений: 299
18.04.2014, 18:57  [ТС]     Пузырьковая сортировка #7
Да, код так сортирует по строкам, а мне надо по столбцам, помогите пожалуйста!
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
18.04.2014, 19:08     Пузырьковая сортировка #8
Сортировку я вам правильно написала. Вывод неправильный. Был.
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
#include <iostream>
#include <iomanip>
 
using namespace std;
 
void main (void)
{
    setlocale(LC_ALL, "Rus");
    const int n = 3, m = 3;    // Размерность массива
    int mas[n][m];
    mas[0][0] = 5;
    mas[0][1] = 12;
    mas[0][2] = 7;
 
    mas[1][0] = 17;
    mas[1][1] = 25;
    mas[1][2] = 18;
    
    mas[2][0] = 20;
    mas[2][1] = 15;
    mas[2][2] = 30;
 
    cout << "Исходный массив:" << endl << endl;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<m; j++)
        {
            cout << mas[i][j] << "\t";
        }
        cout << endl;
    }
    cout << endl << endl;
 
    cout << "После пузырьковай сортировки:" << endl << endl;
 
for (int stolbets = 0; stolbets < n; stolbets++)
{
    for (int i = m-1; i > 0; i--)
    {
        for (int j = 0; j < i; j++)
            if (mas[j][stolbets] > mas[j+1][stolbets])
            {
                int tmp = mas[j][stolbets];
                mas[j][stolbets] = mas[j+1][stolbets];
                mas[j+1][stolbets] = tmp;
            }
    }
 
}
    for (int i=0; i<m; i++)
    {
        for (int j=0; j<n; j++)
        {
            cout << mas[i][j] << "\t";
        }
        cout << endl;
    }
    cout << endl;
    
    system("Pause");
}
Виктор27
10 / 10 / 2
Регистрация: 21.11.2013
Сообщений: 299
18.04.2014, 19:13  [ТС]     Пузырьковая сортировка #9
Керра, спасибо. А мне надо чтоб сортировка была по возрастающей по столбцам от маленького элемента а в самом конце максимальный элемент. Помогите пожалуйста тупому. Учусь на заочке, приходится учить самому, и не как до меня не доходит. Как отсортировать?
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
18.04.2014, 19:20     Пузырьковая сортировка #10
Она же и есть возрастающая по столбцам. Смотрите отдельно на каждый столбец - каждый столбец отсортирован по возрастанию.

Добавлено через 41 секунду
А в "самом конце" максимальный элемент - это уже получается сортировка всей матрицы, а не по столбцам.
Виктор27
10 / 10 / 2
Регистрация: 21.11.2013
Сообщений: 299
18.04.2014, 20:04  [ТС]     Пузырьковая сортировка #11
Да, мне надо отсортировать всю матрицу по возрастающей по столбцам. Прошу прощения если не правильно выразился.

Добавлено через 42 минуты
Помогите пожалуйста отсортировать, всю матрицу по возрастающему по столбцам. PLEASE))))))))
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
18.04.2014, 20:08     Пузырьковая сортировка #12
Отсортировать всю матрицу - это одно, а отсортировать каждый столбец отдельно - это другое.
Виктор27
10 / 10 / 2
Регистрация: 21.11.2013
Сообщений: 299
18.04.2014, 20:14  [ТС]     Пузырьковая сортировка #13
Сказали всю матрицу отсортировать.
Керра
1276 / 444 / 45
Регистрация: 24.08.2011
Сообщений: 2,133
18.04.2014, 20:15     Пузырьковая сортировка #14
Ну так зачем вы про столбцы вообще говорили...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2014, 20:16     Пузырьковая сортировка
Еще ссылки по теме:

Пузырьковая сортировка - C++
Хочу спросить, это пузырьковая сортировка или нет? Как её правильно реализовать? Как оценить эффективность алгоритма сортировки по числу...

Пузырьковая сортировка - C++
Здравствуйте .Объясните , пожалуйста , подробно , как работает пузырьковая сортировка . Получается сравниваются два соседних элемента и...

Пузырьковая сортировка - C++
Написал программу сортировки методом пузырька: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;cstdlib&gt; int...

Пузырьковая сортировка - C++
В чес дело не могу понять? Переменной массива с индексом X присваивается какое то левое значение. #include &lt;iostream&gt; #include...

Пузырьковая сортировка - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main() { const int n = 5; int a; ifstream...


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

Или воспользуйтесь поиском по форуму:
Виктор27
10 / 10 / 2
Регистрация: 21.11.2013
Сообщений: 299
18.04.2014, 20:16  [ТС]     Пузырьковая сортировка #15
простите...
Yandex
Объявления
18.04.2014, 20:16     Пузырьковая сортировка
Ответ Создать тему
Опции темы

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