Форум программистов, компьютерный форум CyberForum.ru

Сортировка пузырьком, в чем ошибка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ как остановить цикл ? http://www.cyberforum.ru/cpp-beginners/thread699962.html
у меня есть цикл : do{ cout<<"vvedite celoe chislo: "<<endl; cin>>a; for(i=0; i<47; i++) if (a%mas==0) cout<<"prostie mnozhiteli chisla a: "<<mas<<endl; }while(...);
C++ Разбить целое число на простые множители с помощью рекурсивного алгоритма Мне нужно разбить целое число на простые множители, этот алгоритм должен быть обязательно рекурсивным.. Помогите пожалуйста. http://www.cyberforum.ru/cpp-beginners/thread699960.html
Поиск в ширину или глубину C++
Лабораторная работа ТЕОРИЯ ГРАФОВ. РАСКРАСКА НЕОРИЕНТИРОВАННЫХ ГРАФОВ Цель работы: изучить особенности неориентированных графов и основные определения; научиться находить хроматическое число и хроматический класс для графа. Задачи: Написать программу (в произвольно выбранной среде программирования), которая реализует поиск хроматического числа, хроматического класса и способов раскраски...
C++ Алгоритм Витерби
Нужно реализовать алгоритм свёрточного кодирования и алгоритм декодирования на основе ММП. Описание свёрточного алгоритма: Для начала выбираем параметры кодирования. Они выбираются один раз и будут постоянными для всей программы. k - количество бит в сообщении, которое передаётся на регистр; n - количество бит в закодированном сообщении (k<n); K - длина регистра; g:\{0,1\}^K\to \{0,1\}^n,...
C++ Заполнение двумерного массива без вложенных циклов http://www.cyberforum.ru/cpp-beginners/thread699949.html
Даны два числа n и m. Создайте двумерный массив int A, заполните его таблицей умножения A=i*j и выведите на экран. При этом нельзя использовать вложенные циклы, все заполнение массива должно производиться одним циклом, например, for(i=0;i<n*m;++i). Как такое можно реализовать? Нужно каким-то образом плясать от индекса, как мне кажется, но вот как?
C++ Выполнить кольцевой сдвиг элементов массива не понимаю как делать задание,туго идет. И вообще тяжело(( Помогите если можете)) Вот задание: Дан массив действительных чисел размером N и целое число К. Если в исходном массиве чисел больше чем К, то в исходном массиве выполнить кольцевой сдвиг его элементов так, чтобы первый максимальный элемент этого массива оказался на K-ом месте. Кольцевой сдвиг массива выполняется всеми его... подробнее

Показать сообщение отдельно
barmagloteot
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 29
17.11.2012, 03:58     Сортировка пузырьком, в чем ошибка
Доброго времени суток.
Язык изучаю недолго. В данном мне задании нужно, помимо прочего, применить сортировку массива.
В материале, который мне дан для выполнения задания, нет примеров кода, а только теоретический материал - в общих чертах описаны несколько принципов реализации сортировки. То есть как их реализовать я должен дойти сам, что вполне оправдано для обучения, и чем я добросовестно и занялся.

Получил вот такой вариант:

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
int main ( )
{
  int m[25] = {-45,89,23,-67,12,97,0,45,-39,3,-11,78,-56,73,-80,92,-20,31,19,-44,55,39,-49,13,-2};
  // числа заполняются вручную по условию задания
  int i;
 
  for (i=0;i<=23;++i)
    {
        if (m[i]>m[i+1])
        {
            int temp=m[i];
            m[i]=m[i+1];
            m[i+1]=temp;
            i=0;
            }
    }
  
  int c;
  for (c=0; c<=24; ++c)
    cout<<m[c]<<endl;
 
 
  system("pause");
    return 0;
}
В итоге программа правильно сортирует все числа, кроме m[0], которое так и остается первым.
Далее я просмотрел описанные здесь, на сайте, методы сортировки. Код в примерах понял не до конца, но в принципе понятно с добавлением второго for, перед первым, программа начинает работать корректно.
Так что вопрос скорее по теории - почему в моем варианте результат некорректен. Никак понять не могу, хотя может позднее время сказывается.
Буду благодарен за любую помощь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru