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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
[WRG]
51 / 51 / 9
Регистрация: 20.11.2011
Сообщений: 243
Записей в блоге: 1
#1

Ошибка сортировки пузырьком - C++

12.04.2012, 18:36. Просмотров 405. Ответов 4
Метки нет (Все метки)

Программа заполняет массив из 10 элементов рандомными числами от 1 до 100, выводит исходный массив, потом сортирует его методом пузырька и снова выводит.
проблема в том что заполняет и выводит массив программа как надо, а вот дольше дело не идет, либо она вобще не меняет элементы местами, либо меняет только одну пару.
грешу на выход индекса массива из диапазона, но сколько не смотрел, вроде все правильно.
помогите разобраться в проблеме)

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
#include <iostream>
#include <time.h>
#include <cstdlib>
using namespace std;
 
void fill_array(int ranmax, int size_of_arr);
void output_array(int size_of_arr);
void sort_array(int size_of_arr);
 
int array[10];   //массив на 10 элементов
 
int main()
{
    setlocale(LC_ALL,"Russian");
    //int i,j,temp;
    fill_array(100, 10);
    cout << "Исходный массив:\n";
    output_array(10);
    sort_array(10);
    cout << "Отсортированный массив:\n";
    output_array(10);
    return 0;
}
 
void fill_array(int ranmax, int size_of_arr)
{
    srand(time(NULL));
    for(int i=0; i < size_of_arr; i++)
      {
          array[i] = 1 + rand() % ranmax;
      }
}
 
void output_array(int size_of_arr)
{
    for(int i=0; i < size_of_arr; i++)
      {
          cout << array[i] << ' ';
      }
    cout  << '\n';
}
 
void sort_array(int size_of_arr)
{
    int i,j,temp;
    for (i = 0; i < size_of_arr-1; i++)
    {
      for (j = 0; j < size_of_arr-1; i++)
      {
        if (array[j+1]<array[j])
          {
              cout << "Обмен\n";
              temp = array[j+1];
              array[j+1] = array[j];
              array[j] = temp;
          }
      }
    }
 
}
да я использую Codeblocs + GCC
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2012, 18:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка сортировки пузырьком (C++):

Метод сортировки пузырьком C++ - C++
Мне нужно составить функцию сортировки массива в матрице. Я написал, все хорошо. Только вот одна проблемка. Эта функция не трогает первый...

Оптимизация сортировки пузырьком - C++
Вот стандартный алгоритм сортировки пузырьком for (int i=0; i&lt;cont.size(); i++) for(int j=0; j&lt;cont.size()-1; j++) ...

вывод сортировки пузырьком - C++
Привет всем кто кликнул мою тему!) Есть программа которая сортирует элементы методом пузырька #include &quot;stdafx.h&quot; #include...

Функция для сортировки массива пузырьком - C++
Всем огромное спасибо! помогли и примеры что надо. Всем удачи! Добавлено через 11 часов 30 минут Всем добрый день. Прошу помочь в...

Написать функцию сортировки пузырьком массива - C++
Нужно написать функцию сортировки (например пузырьком) массива, а затем отсортировать ей какую-ниюудь строку матрицы 5х5 (например вторую)

Сравнение алгоритмов сортировки (выбором и пузырьком) - C++
создать программу для сравнения алгоритмов сортировки (Выбором и Пузырьком)т.е. чтоб выдавал время построения массива.Помогите очень...

4
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
12.04.2012, 19:09 #2
см комментарии:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void sort_array(int size_of_arr)
{
    int i,j,temp;
    for (i = 0; i < size_of_arr-1; i++)
    {
      for (j = 0; j < size_of_arr-1; i++)// i++ заменить на ... (наверное сами уже догадались)
      {
        if (array[j+1]<array[j])
          {
              cout << "Обмен\n";
              temp = array[j+1];
              array[j+1] = array[j];
              array[j] = temp;
          }
      }
    }
 
}
1
[WRG]
51 / 51 / 9
Регистрация: 20.11.2011
Сообщений: 243
Записей в блоге: 1
12.04.2012, 19:20  [ТС] #3
вы имеете в виду вот это
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void sort_array(int size_of_arr)
{
    int i,j,temp;
    for (i = 0; i < size_of_arr-1; i++)
    {
      for (j = size_of_arr; j >=; i--)// i++ заменить на ... (наверное сами уже догадались)
      {
        if (array[j-1]<array[j])
          {
              cout << "Обмен\n";
              temp = array[j-1];
              array[j-1] = array[j];
              array[j] = temp;
          }
      }
    }
 
}
поменял так же плюсы на минусы в сомом обмене элементов. не работает все равно.
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
12.04.2012, 19:24 #4
Ладно давайте так:
вот это:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void sort_array(int size_of_arr)
{
    int i,j,temp;
    for (i = 0; i < size_of_arr-1; i++)
    {
      for (j = 0; j < size_of_arr-1; i++)
      {
        if (array[j+1]<array[j])
          {
              cout << "Обмен\n";
              temp = array[j+1];
              array[j+1] = array[j];
              array[j] = temp;
          }
      }
    }
 
}
меняйте на это:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void sort_array(int size_of_arr)
{
    int i,j,temp;
    for (i = 0; i < size_of_arr-1; i++)
    {
      for (j = 0; j < size_of_arr-1; j++)
      {
        if (array[j+1]<array[j])
          {
              cout << "Обмен\n";
              temp = array[j+1];
              array[j+1] = array[j];
              array[j] = temp;
          }
      }
    }
 
}
и все заработает.

Добавлено через 52 секунды

Не по теме:

видимо не сами код писали

1
[WRG]
51 / 51 / 9
Регистрация: 20.11.2011
Сообщений: 243
Записей в блоге: 1
12.04.2012, 19:30  [ТС] #5
ааааа черт благодарствую)
код писал как раз сам) просто второй день с++ изучаю) надо привыкнуть вместо j использовать другую переменную, а то i и j почти не отличимы. шрифт в редакторе поменять
еще раз спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2012, 19:30
Привет! Вот еще темы с ответами:

Написать программу для сортировки массива способами шелла вставки слияния и пузырьком - C++
Написать программу для сортировки массива способами шелла вставки слияния и пузырьком в одной программе со всеми операторами и объяснением...

С помощью сортировки пузырьком упорядочить элементы матрицы, находящиеся ниже главной диагонали - C++
отсортировать элементы двумерного массива которые находятся ниже главной диагонали

Почему стандартная сортировка вектора std::sort намного быстрее сортировки вставками/пузырьком? - C++
Здравствуйте, объясните, пожалуйста, как реализована std::sort. Ясно, что через итераторы, но почему такой сильный выигрыш во времени (1.4...

Распараллелить алгоритм сортировки "пузырьком" - C++
Реализовать параллельную сортировку методом Пузырька #include &lt;iostream&gt; using namespace std; int main() { // Считываем...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
12.04.2012, 19:30
Ответ Создать тему
Опции темы

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