Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/152: Рейтинг темы: голосов - 152, средняя оценка - 4.66
6 / 5 / 4
Регистрация: 14.01.2017
Сообщений: 294

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

13.10.2017, 19:10. Показов 31222. Ответов 10
Метки нет (Все метки)

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

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

Выведите одно число – количество обменов пузырьковой сортировки.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.10.2017, 19:10
Ответы с готовыми решениями:

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

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

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

10
1 / 1 / 1
Регистрация: 20.10.2015
Сообщений: 8
14.10.2017, 10:12
Создай счетчик и вперед сортировать
0
6 / 5 / 4
Регистрация: 14.01.2017
Сообщений: 294
14.10.2017, 10:14  [ТС]
В том то и дело, что я не знаю как создать этот счетчик
0
1 / 1 / 1
Регистрация: 20.10.2015
Сообщений: 8
14.10.2017, 10:15
Выкладывай код с сортировкой, и я тебе скажу, как счетчик вставить
0
6 / 5 / 4
Регистрация: 14.01.2017
Сообщений: 294
14.10.2017, 10:50  [ТС]
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
1 / 1 / 1
Регистрация: 20.10.2015
Сообщений: 8
14.10.2017, 14:10
Так переменная "а" и считает количество перестановок
0
6 / 5 / 4
Регистрация: 14.01.2017
Сообщений: 294
14.10.2017, 14:17  [ТС]
Ну я просто к тому моменту уже сделал, сюда кинул, чтобы понять так или нет
0
1 / 1 / 1
Регистрация: 20.10.2015
Сообщений: 8
14.10.2017, 14:21
В общем все так, но счетчик лучше использовать типа size_t, так как значение не бывает отрицательное.
И еще, обычно индексы проверяют от 0 до n-1
0
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,814
14.10.2017, 14:31
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
7 / 7 / 0
Регистрация: 27.02.2022
Сообщений: 35
18.06.2022, 11:24
Да вообще EASY

C++
1
2
#include <bits/stdc++.h>
int main(){int N;std::cin>>N;std::vector<int>t(N);for(int i=0;i<N;i++){std::cin>>t[i];}bool u=true;int f=0;while(u){u=false;for(int i=0;i<N-1;i++){if(t[i]>t[i+1]){std::swap(t[i],t[i+1]);u=true;f+=1;}}N-=1;}std::cout<<f;return 0;}
1
 Аватар для Tim977
40 / 12 / 0
Регистрация: 05.08.2022
Сообщений: 12
13.08.2022, 14:33
Чуть чуть поправил, чтобы сириус принял)

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
#include<iostream> 
#include <algorithm> 
#include <vector>
 
using namespace std;
 
int main() {
    vector<int> v;
    int n, q;
    cin >> n;
    int a = 0;
    for (int i = 0; i < n; i++) { 
        cin >> q;
        v.push_back(q);
    }
 
    for (int i = 1; i < n; i++) {
        for (int j = 1; j < n; j++) {
            if (v[j - 1] > v[j]) {
                swap(v[j - 1], v[j]);
                a++;
            }
        }
    }
    cout << a;
    return 0;
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.08.2022, 14:33
Помогаю со студенческими работами здесь

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

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

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

Не пойму алгоритм пузырьковой сортировки
Не пойму алгоритм пузырьковой сортировки, как осуществить сравнение сразу со всеми элементами массива? for i:=1 to 10 do begin for...

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru