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

Определите, сколько обменов сделает алгоритм пузырьковой сортировки по возрастанию для данного массива

13.10.2017, 19:10. Просмотров 976. Ответов 8
Метки нет (Все метки)

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

На первой строке дано целое число n (1≤n≤1000) — количество элементов в массиве. На второй строке — сам массив. Гарантируется, что все элементы массива — различные целые числа, не превышающие по модулю 10^9.

Выведите одно число – количество обменов пузырьковой сортировки.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2017, 19:10
Ответы с готовыми решениями:

Найти количество обменов пузырьковой сортировки
Подскажите пожалуйста , как найти количество обменов #include <iostream> using namespace std; ...

Определите, сколько обменов сделает алгоритм пузырьковой сортировки по возрастанию для данного массива
Сортировка пузырьком Определите, сколько обменов сделает алгоритм пузырьковой сортировки по...

Алгоритм пузырьковой сортировки
#include<iostream.h> #define SIZE 5 void bsort (int iArray, int n); int main() { char ch;...

Алгоритм «пузырьковой» сортировки
алгоритма простой «пузырьковой» сортировки

Алгоритм пузырьковой сортировки
Можете подсказать как сделать так что бы после сортировки отрицательные числа отсортированные от...

8
mrSerj
1 / 1 / 1
Регистрация: 20.10.2015
Сообщений: 8
14.10.2017, 10:12 2
Создай счетчик и вперед сортировать
0
ARTER616
1 / 1 / 3
Регистрация: 14.01.2017
Сообщений: 283
14.10.2017, 10:14  [ТС] 3
В том то и дело, что я не знаю как создать этот счетчик
0
mrSerj
1 / 1 / 1
Регистрация: 20.10.2015
Сообщений: 8
14.10.2017, 10:15 4
Выкладывай код с сортировкой, и я тебе скажу, как счетчик вставить
0
ARTER616
1 / 1 / 3
Регистрация: 14.01.2017
Сообщений: 283
14.10.2017, 10:50  [ТС] 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream> 
#include <algorithm> 
using namespace std; 
int main(){ 
int n; 
cin >> n; 
int arr[n]; 
int a = 0; 
for(int i = 0; i < n; i++){cin >> arr[i];} 
 
for(int i = 1; i < n; i++){ 
for(int j = 1; j < n; j++){ 
if(arr[j - 1] > arr[j]){ 
swap(arr[j - 1], arr[j]); 
a++;}}}
return 0;}
0
mrSerj
1 / 1 / 1
Регистрация: 20.10.2015
Сообщений: 8
14.10.2017, 14:10 6
Так переменная "а" и считает количество перестановок
0
ARTER616
1 / 1 / 3
Регистрация: 14.01.2017
Сообщений: 283
14.10.2017, 14:17  [ТС] 7
Ну я просто к тому моменту уже сделал, сюда кинул, чтобы понять так или нет
0
mrSerj
1 / 1 / 1
Регистрация: 20.10.2015
Сообщений: 8
14.10.2017, 14:21 8
В общем все так, но счетчик лучше использовать типа size_t, так как значение не бывает отрицательное.
И еще, обычно индексы проверяют от 0 до n-1
0
Nishen
Модератор
664 / 430 / 220
Регистрация: 26.02.2015
Сообщений: 1,987
Завершенные тесты: 3
14.10.2017, 14:31 9
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <algorithm>
#include <iostream>
#include <random>
#include <vector>
 
void fillVector(std::vector<int>&, int lowerBound, int upperBound);
void print(const std::vector<int>&);
 
int main() {
 
    std::vector<int> vec { };
    std::size_t size { 0 };
 
    std::cout
        << "Please, enter the number of elements: ";
    std::cin
        >> size;
 
    if (size < 1 || size > 1000) {
 
        std::cerr
            << "The size must be in the range [1; 1000]" << std::endl;
 
        return 1;
 
    }
 
    vec.resize(size);
 
    fillVector(vec, 0, 100);
    print(vec);
 
    std::size_t changes { 0 };
 
    for (std::size_t i { 0 }; i < vec.size() - 1; ++i) {
 
        int tempValue { 0 };
 
        for (std::size_t j { i + 1 }; j < vec.size(); ++j) {
 
            if (vec.at(i) > vec.at(j)) {
 
                tempValue = vec.at(i);
                vec.at(i) = vec.at(j);
                vec.at(j) = tempValue;
 
                ++changes;
 
            }
 
        }
 
    }
 
    print(vec);
 
    std::cout
        << "Number of changes: " << changes << std::endl;
 
    return 0;
 
}
 
void fillVector(std::vector<int>& vec, int lowerBound, int upperBound) {
 
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<int> dist(lowerBound, upperBound);
 
    int randomValue { };
 
    for (auto& value : vec) {
 
        while (true) {
 
            randomValue = dist(gen);
        
            if ( std::find( vec.begin(), vec.end(), randomValue) == vec.end() ){
        
                value = randomValue;
                break;
        
            }
 
        }
 
    }
 
}
 
void print(const std::vector<int>& vec) {
 
    for (const auto value : vec) {
 
        std::cout
            << value << " ";
 
    }
 
    std::cout
        << std::endl;
 
}
0
14.10.2017, 14:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2017, 14:31

Модифицированный алгоритм пузырьковой сортировки
Консольного приложение, реализующего два алгоритма, один из которых обеспечивает решение задачи...

Не пойму алгоритм пузырьковой сортировки
Не пойму алгоритм пузырьковой сортировки, как осуществить сравнение сразу со всеми элементами...

Алгоритм сортировки одномерного массива по возрастанию
8. Алгоритм сортировки одномерного массива по возраста- нию.


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

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

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