Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 12.07.2018
Сообщений: 3
1

Массивы. Была сортировка пузырьком

15.07.2018, 17:44. Показов 562. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. "Изучал/мучал" сортировки, начал с сортировки пузырьком для одномерных массивов, а закончил вот этим "чудом".

Подскажите, где тут совсем индийский код и в какую сторону оптимизировать (указатели / ссылки / потоки еше не изучал)

з.ы.

for (int count = 0; count < size * 20; count++) - типа количество проходов по массиву (т.е. считай сложность массива) я так и не понял как в зависимости от увеличения размера массива, увеличивать количество циклов прохода, дабы всё отфильтровалось. На вики читал про сложность типа O(n^2) и то что проходы повторяются n - 1 раз...


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
 int data[6][6], num1, num2, size = 6;
 cout << "Сортировка методом пузырька - \n";
 
 // ввод данных в массив
 for (int y = 0; y < size; y++) {
 
    for (int x = 0; x < size; x++) {
 
   data[y][x] = rand();
 
   cout << "Элемент с индексом " << y << " " << x << " = " << data[y][x] << "\n";
 
    }
 
 }
 
for (int count = 0; count < size * 20; count++) {
        
    for (int x = 0; x < size; x++) {
 
   for (int y = 0; y < size - 1; y++) {
    
    if (y == 0 && x != 0) {
 
     if (data[x - 1][size - 1] > data[x][y]) {
 
        num1 = data[x][y];
        data [x][y] = data[x - 1][size - 1];
        data[x - 1][size - 1] = num1;
        
     }
     
    }
 
    num1 = data[x][y];
    num2 = data[x][y + 1];
 
    if (num1 > num2) {
 
     num1 = data[x][y];
     data[x][y] = data[x][y + 1];
     data[x][y + 1] = num1;
 
    }
   }
    }
        
    cout << "\n\n";
    cout << "____________________________________\n";
    // проверка значений в таблице
    for (int y = 0; y < size; y++) {
 
   for (int x = 0; x < size; x++) {
 
    cout << "Элемент с индексом " << y << " " << x << " = " << data[y][x] << "\n";
    }
    }
    cout << "____________________________________\n\n";
 }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2018, 17:44
Ответы с готовыми решениями:

сортировка пузырьком
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int main(int...

Сортировка пузырьком
Требуется отсортировать пузырьком элементы массива, которые находятся на непарных позициях.

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

Сортировка пузырьком
Помогите с заданием, сказали модифицировать сортировку так чтоб на 1000 элементов выходило 999...

1
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
21.07.2018, 01:10 2
Что конкретно интересует-то? " где тут совсем индийский код " - вопрос скорее риторический, а не конкретный.
Теперь насчёт кода.
Цитата Сообщение от Sanariss Посмотреть сообщение
for (int count = 0; count < size * 20; count++) {
цикл по всему массиву (for x+for y) и правда должен повторяться несколько раз, а значит быть обёрнут в некий ещё один цикл.
Только с чего вы вообще взяли, что это должен быть цикл size*20? Что за волшебное число 20? Почему не size*size? Я вижу, говоришь про его связь с некой "сложностью" алгоритма - это не так.

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>
using namespace std;
 
int main() {
    int data[6][6], num1, num2, size = 6;
    srand(time(NULL));
    // ввод данных в массив
    for (int y = 0; y < size; y++) {
 
        for (int x = 0; x < size; x++) {
 
            data[y][x] = rand()%90+10;
 
            cout <<  data[y][x] << " ";
 
        }
        cout << endl;
 
    }
    for (int count = 0; count < size * size; count++) {
 
        for (int x = 0; x < size; x++) {
 
            for (int y = 0; y < size - 1; y++) {
                
                num1 = data[x][y];
                num2 = data[x][y + 1];
 
                if (num1 > num2) {
 
                    num1 = data[x][y];
                    data[x][y] = data[x][y + 1];
                    data[x][y + 1] = num1;
 
                }
            }
            if (x != size-1) {
 
                if (data[x][size - 1] > data[x+1][0]) {
                    num1 = data[x][size - 1];
                    data[x][size - 1] = data[x + 1][0];
                    data[x + 1][0] = num1;
                }
            }
        }
    }
 
        cout << "\n\n";
        cout << "____________________________________\n";
        for (int y = 0; y < size; y++) {
 
            for (int x = 0; x < size; x++) {
                
                cout << data[y][x] << " ";
 
            }
            cout << endl;
 
        }
        cout << "____________________________________\n\n";
    return 0;
}
0
21.07.2018, 01:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2018, 01:10
Помогаю со студенческими работами здесь

Сортировка Пузырьком :)
Привет, ребята :) Вообщем, наткнулся на написание программы с использованием сортировки пузырьком....

Сортировка пузырьком
Привет всем. Проверьте программу, пожалуйста. #include &lt;stdio.h&gt; #include &lt;conio.h&gt; int n, i,...

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

Сортировка пузырьком
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt;...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru