Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
MaksimLev
0 / 0 / 1
Регистрация: 14.02.2017
Сообщений: 102
1

Описание каждого хода в BubbleSort

28.03.2017, 18:43. Просмотров 828. Ответов 7
Метки нет (Все метки)

Здравствуйте. Помогите, пожалуйста, сделать так, чтобы описывалась каждая сортировка постепенно и потом результат, а не сразу конечный отсортированный результат.
Вот код:
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
#include <iostream>
#include <cstdlib>
#include <ctime>
#define N 100
 using namespace std;
 
int bubblesort(int n, int mas[]){
    int i,j, sort;
    for(i = 1; i < n; i++)
        for(j = 0; j < n - i; j++)
        { 
            if(mas[j] > mas[j + 1])
            {
                sort = mas[j];
                mas[j] = mas[j + 1]; 
                mas[j + 1] = sort; 
        }
        }
    return 0; 
}
 
void mas_vvod (int n, int mas[]){
    int min,max,i;
    cout<<"masiva min= ";
    cin>>min;
    cout<<"masiva max= ";
    cin>>max;
    for(i=0; i<n; i++){
        mas[i]=min+rand()%(max-min+1);
    }
}
 
void mas_vivod(int n, int mas[]) {
    for( int i = 0; i < n; i++)
    cout << mas[i] << " ";
    cout << endl;
}
 
int main()
{
    srand(time(NULL));
    int mas[N];
    int n;
    cout<<"masiva razmer n= ";
    cin>>n;
    mas_vvod(n, mas);
    mas_vivod(n, mas);
    bubblesort(n, mas);      
    mas_vivod(n, mas);
    system("Pause>>nul");
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2017, 18:43
Ответы с готовыми решениями:

Вместо ShakerSort, получается BubbleSort
Здравствуйте. Помогите, пожалуйста, разобраться с проблемой. У меня всё никак...

Где пишется описание для выходного файла .exe (например описание процесса)
Консольный проект, скомпилировали, получили exe. Жмем правой кнопкой на...

2 хода конём
Заданы координаты двух клеток шахматного поля (от 1 до 8 по обоим измерениям)....

Проверка координат для хода слона
Задается расположение фигурки слона. Так же задаем точку для проверки. Как...

Шахматы: определение правильности хода конем
#include &lt;iostream&gt; using namespace std; int main() {...

7
Sigma214
42 / 43 / 24
Регистрация: 01.05.2012
Сообщений: 178
28.03.2017, 19:32 2
В этом цикле:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for(i = 1; i < n; i++)
       {
        for(j = 0; j < n - i; j++)
        { 
            if(mas[j] > mas[j + 1])
            {
                sort = mas[j];
                mas[j] = mas[j + 1]; 
                mas[j + 1] = sort; 
            }
            cout << mas[j] << " ";
        }
        }

Вроде так.
1
MaksimLev
0 / 0 / 1
Регистрация: 14.02.2017
Сообщений: 102
28.03.2017, 19:52  [ТС] 3
Sigma214, Да так получилось, но он съедает заменяемое число каждый раз.
Типо:
2 12 4 10 15 20 19
2 4 10 12 20 19 (съел 15, так как вместо 15 поставил 12)
2 4 10 12 20 (съел 19, так как вместо 19 поставил 20)
0
MaksimLev
0 / 0 / 1
Регистрация: 14.02.2017
Сообщений: 102
28.03.2017, 19:59  [ТС] 4
Sigma214, точнее так даже. наибольшее число съедает.
0
Изображения
 
MaksimLev
0 / 0 / 1
Регистрация: 14.02.2017
Сообщений: 102
29.03.2017, 11:38  [ТС] 5
как это исправить?

Добавлено через 58 минут


Добавлено через 1 час 17 минут


Добавлено через 12 часов 50 минут
никто не знает как это исправить?
0
Sandr1x
3 / 3 / 2
Регистрация: 05.01.2014
Сообщений: 16
29.03.2017, 12:00 6
Оно не съедает, просто не выводит.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main(int argc, const char * argv[]) {
    int mas[] = {2, 12, 4, 10, 5, 7, 1, 9, 15, 20, 19},
    n = 7, sort = 0;
    
    for(int i = 1; i < n; i++){
        for(int j = 0; j < n - i; j++){
            if(mas[j] > mas[j + 1]){
                sort = mas[j];
                mas[j] = mas[j + 1];
                mas[j + 1] = sort;
            }
            
            for(int k = 0; k < n; k++)
                std::cout << mas[k] << " ";
            std::cout << std::endl;
        }
        std::cout << "------------" << std::endl;
    }
    
    return 0;
}
1
MaksimLev
0 / 0 / 1
Регистрация: 14.02.2017
Сообщений: 102
29.03.2017, 13:18  [ТС] 7
Sandr1x, а как сделать, чтобы программа не слева на право число сортировало, а с право налево. Чтобы конечный результат был таким же как и в первой программе, только сортировка в другую сторону.
0
Миниатюры
Описание каждого хода в BubbleSort  
Sandr1x
3 / 3 / 2
Регистрация: 05.01.2014
Сообщений: 16
29.03.2017, 14:16 8
Лучший ответ Сообщение было отмечено MaksimLev как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for(int i = n - 1; i >= 0; i--){
        for(int j = n - 1; j >= n - i; j--){
            if(mas[j] < mas[j - 1]){
                sort = mas[j];
                mas[j] = mas[j - 1];
                mas[j - 1] = sort;
            }
            
            for(int k = 0; k < n; k++)
                std::cout << mas[k] << " ";
            std::cout << std::endl;
        }
        std::cout << "------------" << std::endl;
    }
1
29.03.2017, 14:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2017, 14:16

Игра 2048 - исправить выбор направления хода игроком
Чувствую, что напутал что-то при выборе направления хода игроком... #include...

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

Алгоритм хода компьютера в игре "Крестики-Нолики" на неограниченном поле
Крестики нолики на неограниченном поле


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

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

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