Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Esso11
1 / 1 / 0
Регистрация: 20.08.2017
Сообщений: 275
#1

Сортировка пузырьком

06.01.2018, 01:42. Просмотров 816. Ответов 13
Метки нет (Все метки)

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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
 
int main()
{
    const int n = 10;
    int arr[n];
    for (int i = 0; i < n; i++)
    {
        arr[n] = rand() % 10;
        cout << arr[n] << "\t";
    }
 
 
            for (int i = 0; i < n; i++)
            {
                if (arr[i] > arr[i + 1])
                {
                    int temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
            }
    
    
        for (int i = 0; i < n; i++)
        {
            cout << arr[i] << "\t";
        }
    return 0;
}
подскажите как правильно написать, коментарии приветствуются))

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

0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2018, 01:42
Ответы с готовыми решениями:

Сортировка пузырьком
Привет всем! У меня по методу вопросов нет, успешно отсортировал от меньшего к...

Сортировка пузырьком
Всем доброго времени суток. Помогите пожалуйста написать программу сортировки...

Сортировка пузырьком
Здравствуйте! Решаю задачу:пользователь вводит слова через пробел,я должен...

сортировка пузырьком
Вечер добрый! Задача проста: отсортировать сначала по зп, если &lt; 400, то в...

сортировка пузырьком
#include &lt;iostream&gt; using namespace std; void main() { const n=4; int...

13
Yetty
463 / 465 / 422
Регистрация: 18.12.2017
Сообщений: 1,906
06.01.2018, 01:49 #2
Цитата Сообщение от Esso11 Посмотреть сообщение
подскажите как правильно написать, коментарии приветствуются))
Esso11, Вы условие задачи напишите чтобы было что советовать. спасибо.
0
Esso11
1 / 1 / 0
Регистрация: 20.08.2017
Сообщений: 275
06.01.2018, 01:50  [ТС] #3
Yetty, Пардон, отсортировать массив и вывести в консольку
0
Yetty
463 / 465 / 422
Регистрация: 18.12.2017
Сообщений: 1,906
06.01.2018, 02:09 #4
Цитата Сообщение от Esso11 Посмотреть сообщение
отсортировать массив
какой массив статический, динамический, размер массива задан или вводится, тип данных массива, каким способом заполняется , уже молчу насчёт консольки - сформулируйте задачу немного конкретнее

Добавлено через 9 минут
сортировать как нужно по возрастанию?
0
Esso11
1 / 1 / 0
Регистрация: 20.08.2017
Сообщений: 275
06.01.2018, 02:16  [ТС] #5
Yetty, массив видно по коду статический заполняется рандомно на 10 элементов, тип данных вроде как тоже виден ... целочисленные переменные.... в консоль просто результат сортировки ... я про пузырьковую сортировку....
0
Herji
290 / 202 / 173
Регистрация: 11.05.2016
Сообщений: 658
Завершенные тесты: 1
06.01.2018, 02:24 #6
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
#include <iostream>
using namespace std;
 
 
int main()
{
    const int n = 10;
    int arr[n];
    for (int i = 0; i < n; i++)
    {
        arr[i] = rand() % 10;
        cout << arr[i] << "\t";
    }
 
    cout << "\n\n";
    int tmp=0;
 
    for(int i = 0; i < n - 1; ++i) // i - номер прохода
    {            
        for(int j = 0; j < n - 1; ++j) // внутренний цикл прохода
        {     
            if (arr[j + 1] < arr[j]) 
            {
                tmp = arr[j + 1]; 
                arr[j + 1] = arr[j]; 
                arr[j] = tmp;
            }
        }
    }
    
    
    for (int i = 0; i < n; i++)
    {
        cout << arr[i] << "\t";
    }
 
 
    return 0;
}
0
Esso11
1 / 1 / 0
Регистрация: 20.08.2017
Сообщений: 275
06.01.2018, 02:30  [ТС] #7
Herji, почему ++i если мы идем я так понял с конца массива
0
Herji
290 / 202 / 173
Регистрация: 11.05.2016
Сообщений: 658
Завершенные тесты: 1
06.01.2018, 02:33 #8
Лучший ответ Сообщение было отмечено Esso11 как решение

Решение

Цитата Сообщение от Esso11 Посмотреть сообщение
почему ++i если мы идем я так понял с конца массива
мы идем из начала в конец;
что именно Вас смущает?
1
Esso11
1 / 1 / 0
Регистрация: 20.08.2017
Сообщений: 275
06.01.2018, 02:40  [ТС] #9
Herji, не то что смущает, а просто не понятно for(int i = 0; i < n - 1; ++i)
for(int j = 0; j < n - 1; ++j)
почему условие такое

Добавлено через 3 минуты
Herji, все я понял спасибо, пробежался отладчиком и разобрался!!! приятно что Есть добрые люди которые помогут....
Спасибо модератору что всегда корректирует мой текст)
0
Yetty
463 / 465 / 422
Регистрация: 18.12.2017
Сообщений: 1,906
06.01.2018, 02:41 #10
Esso11, да видно всё по коду - просто где гарантия что код соответствует задаче?

Цитата Сообщение от Esso11 Посмотреть сообщение
почему условие такое
цикл как цикл от и до с шагом 1 что в нём нет так
0
Catstail
Модератор
23546 / 11656 / 2039
Регистрация: 12.02.2012
Сообщений: 19,015
06.01.2018, 09:20 #11
Такое впечатление, что все ленятся заглянуть в учебник... Правильная пузырьковая сортировка (без лишних циклов) выглядит так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void BSort(int *A, int n)
{
    int i,t,c;
    while(1)
    {
        c=0;
        for (i=0; i<n-1; i++)
            if (A[i]>A[i+1])
            {
                t=A[i];
                A[i]=A[i+1];
                A[i+1]=t;
                c=1;
            }   
        if (c==0) break;
    }
}
Казалось бы, а в чем существенная разница с кодом Herji? Разница в том, что если в исходном массиве мало инверсий, то приведенный выше код будет работать быстрее. А код Herji будет крутить лишние циклы.
1
Herji
290 / 202 / 173
Регистрация: 11.05.2016
Сообщений: 658
Завершенные тесты: 1
06.01.2018, 13:17 #12
Цитата Сообщение от Catstail Посмотреть сообщение
А код Herji будет крутить лишние циклы.
Это код отсюда: Алгоритмы сортировок

тогда уж можно и еще чуток улучшить:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void BB_Sort(int *A, int n)
{
    int i,j,t,c;
    for(j=0; j<n-1; j++)
    {
        c=0;
        for (i=0; i<n-j-1; i++)
            if (A[i]>A[i+1])
            {
                t=A[i];
                A[i]=A[i+1];
                A[i+1]=t;
                c=1;
            }   
        if(!c) return;
    }
}


Когда речь заходит про эффективность, о пузырьках как-то не думается, а думается о них зачастую как о доступном для понимания и реализации в коде примере для обучения; и простейшее решение тут, пусть и не эффективное, но наглядное будет иметь смысл, в то время как необязательные нагромождения будут лишь отвлекать
0
Esso11
1 / 1 / 0
Регистрация: 20.08.2017
Сообщений: 275
06.01.2018, 18:11  [ТС] #13
Catstail, ваш код сильно труден для моего понимания))) а можно коментарии?)

Добавлено через 11 минут
Catstail, void BSort(int *A, int n)
0
Catstail
Модератор
23546 / 11656 / 2039
Регистрация: 12.02.2012
Сообщений: 19,015
06.01.2018, 19:33 #14
Esso11, это функция, которая сортирует массив A.
0
06.01.2018, 19:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2018, 19:33

Сортировка пузырьком
вот написала программу но не работает :( #include &lt;iostream&gt; #include...

Сортировка пузырьком
//--------------------------------------------------------------------------- ...

Сортировка пузырьком
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;ctime&gt; using namespace std;...


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

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

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