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

Шаблон пузырьковой сортировки

03.05.2014, 17:48. Показов 5014. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня проблемы с шаблоном пузырьковой сортировки.
Почему элементы double не сортируется нормально?
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
#include <iostream>
#include <conio.h>
using namespace std;
template <class T>
void sort(T array[], int n) {
    T t;
    int cnt;
    for(int i = 0; i < n; i++) {
        cnt = 0;
        for(int j = 0; j < n - i; j++) {
            if(array[j] > array[j+1]) {
                t = array[j];
                array[j] = array[j+1];
                array[j+1] = t;
                cnt++;
            }
        }
        if(cnt == 0) {break;}
    }
        return;
    }
    int main() {
        int a[100], N, i;
        double b[100], M;
        cin >> N;
        for(i = 0; i < N; i++) {
            cin >> a[i];
        }
        sort(a, N);
        for(i = 0; i < N; i++) {
            cout << a[i] << " ";
        }
        cin >> M;
        for(i = 0; i < M; i++) {
            cin >> b[i];
        }
        sort(b, M);
        for(i = 0; i < M; i++) {
            cout << b[i] << " ";
        }
        getch();
        return 0;
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.05.2014, 17:48
Ответы с готовыми решениями:

Составить программы для пузырьковой сортировки и сортировки посредством выбора с применением оператора while
Доброго времени суток, очень нужна ваша помощь в решении данной проблемы, буду бесконечно благодарен. Составить программы для пузырьковой...

Процедура пузырьковой сортировки
Мне нужна эта процедура на Си++. Как представить запись на Си++? type tKey = string; tData = integer; tItem =...

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

8
 Аватар для cooller
571 / 539 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
03.05.2014, 17:56
MahovIV, я проверил, у меня сортирует нормально
приведи тест при котором не верный результат
0
542 / 163 / 79
Регистрация: 23.09.2013
Сообщений: 316
03.05.2014, 18:01
Предположим что n переданный в вашу функцию - 1. Т.е у пользователя запрошен один элемент.
Таким образом следующая строка:
C++
1
if (array[j] > array[j+1])
Будет обращаться не только в array[0] - где лежит запрошенное число, но и в array[1] - с неинициализированным значением.
0
6 / 7 / 4
Регистрация: 17.09.2013
Сообщений: 337
03.05.2014, 18:13  [ТС]
При любом наборе, например
5
1.1 2.2 3.4 3.3 1.1
отображается
6.67636e-307 1.1 1.1 2.2 3.3
Проблемы именно с наибольшим элементом.
0
619 / 218 / 51
Регистрация: 22.11.2010
Сообщений: 1,781
Записей в блоге: 3
03.05.2014, 18:17
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template <class T>
void sort(T array[], int n) {
    T t;
    int cnt;
    for(int i = 0; i < n; i++) {
        cnt = 0;
        for(int j = 0; j < n - 1; j++) { //поменял i на 1 сортирует и выводит без помех, 
            if(array[j] > array[j+1]) { //а до этого да, вывод максимального был подпорчен
                t = array[j];
                array[j] = array[j+1];
                array[j+1] = t;
                cnt++;
            }
        }
        if(cnt == 0) {break;}
    }
        return;
    }
0
542 / 163 / 79
Регистрация: 23.09.2013
Сообщений: 316
03.05.2014, 18:23
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
template <class T>
void sort(T array[], int n) {
  T temp;
  for (int j = 0; j < n - 1; j++) {
      int f = 0;
      int min = j;
      for(int i = j; i < (n - j - 1); i++) {
          if (array[i] > array[i + 1]) {
              temp = array[i];
              array[i] = array[i + 1];
              array[i + 1] = temp;
              f = 1;
            }
          if (array[i] < array[min])
            min = i;
        }
      if (f == 0) {
          break;
        }
      if (min != j) {
          temp = array[j];
          array[j] = array[min];
          array[min] = temp;
        }
    }
}
Как вариант - адаптированный из википедии. http://ru.wikipedia.org/wiki/
0
6 / 7 / 4
Регистрация: 17.09.2013
Сообщений: 337
03.05.2014, 18:24  [ТС]
А как сортировать символьный массив таким способом?
0
542 / 163 / 79
Регистрация: 23.09.2013
Сообщений: 316
03.05.2014, 18:33
Для любого типа данных у которого определена операция сравнения ( operator < например) и операция присваивания. Код будет сортировать вполе корректно.
0
6 / 7 / 4
Регистрация: 17.09.2013
Сообщений: 337
03.05.2014, 18:35  [ТС]
Я нашёл решение.
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 <conio.h>
using namespace std;
template <class T>
void sort(T array[], int n) {
    T t;
    int cnt;
    for(int i = 0; i < n; i++) {
        cnt = 0;
        for(int j = 0; j < n - 1; j++) {
            if(array[j] > array[j+1]) {
                t = array[j];
                array[j] = array[j+1];
                array[j+1] = t;
                cnt++;
            }
        }
        if(cnt == 0) {break;}
    }
        return;
    }
    int main() {
        int a[100], N, i, K;
        double b[100], M;
        char c[100];
        cin >> N;
        for(i = 0; i < N; i++) {
            cin >> a[i];
        }
        sort(a, N);
        for(i = 0; i < N; i++) {
            cout << a[i] << " ";
        }
        cin >> M;
        for(i = 0; i < M; i++) {
            cin >> b[i];
        }
        sort(b, M);
        for(i = 0; i < M; i++) {
            cout << b[i] << " ";
        }
        cin >> K;
        for(i = 0; i < K; i++) {
            cin >> c[i];
        }
        sort(c, K);
        for(i = 0; i < K; i++) {
            cout << c[i];
        }
        getch();
        return 0;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.05.2014, 18:35
Помогаю со студенческими работами здесь

Метод пузырьковой сортировки
Подскажите как сделать сортировку одномерного массива методом пузырька по убыванию? //сортировка методом пузырька for (int...

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

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

Напишите функцию пузырьковой сортировки
Напишите функцию пузырьковой сортировки на с++. Функция на вход принимает ссылку на массив. Сортировка осуществляется в исходном массиве.

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
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