С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
67 / 5 / 3
Регистрация: 30.11.2015
Сообщений: 170
1

Пузырьковая сортировка с константным размером массива

16.02.2016, 15:00. Показов 1391. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Объясните пожалуйста как так получается?
есть массив в котором провожу пузырьковую сортировку...
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
#include<iostream>
#include<iomanip>
#include<cstdlib>
#include<ctime>
 
void sorting(int [], const int);//функция сортировки
void print(int [], int);//функция вывода массива
 
int main()
{
    setlocale(LC_ALL, "Russian");
    system("mode con cols=100 lines=50");
//-------------------------------------------
    int arraySize=2;
    int a[arraySize]={0};
//-------------------------------------------
   srand(time(0));
   std::cout<<"Массив случайных числе"<<std::endl;
   print(a, arraySize);
   std::cout<<std::endl;
   std::cout<<"Отсортированный массив"<<std::endl;
   sorting(a, arraySize);
//-------------------------------------------
    return 0;
}
void sorting(int a[], int size)
{
    int hold=0;
    for(int pass=1; pass<size; pass++)
    for(int i=0; i<size; i++)
    if(a[i]>a[i+1]){
        hold=a[i];
        a[i]=a[i+1];
        a[i+1]=hold;
    }
    for(int i=0; i<size; i++){
    std::cout<<a[i]<<" ";
   }
   std::cout<<std::endl;
}
void print(int a[], int size)
{
   for(int i=0; i<size; i++){
   a[i]=1+rand()%100;
   std::cout<<a[i]<<" ";
   }
   std::cout<<std::endl;
}
если сделать размер arraySize константным сортировка выводится с ошибкой на одно число, конкретнее заменяет число из сортированного массива на число которое соответствует размеру этого массива.(на малых массивах легко проверить) Но по книгам, советуют делать обычно константный размер массива, или я не правильно что-то понял или сортировка не правильно оформлена у меня?
И еще такой вопрос: в оригинале вроде код сортировки такой,
C++
1
2
3
4
5
6
7
int hold=0;
    for(int pass=1; pass<size; pass++)
    for(int i=0; i<size; i++)
    if(a[i]>a[i+1]){
        hold=a[i];
        a[i]=a[i+1];
        a[i+1]=hold;
зачем pass=1? если ставить pass=0 результат тот же самый...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.02.2016, 15:00
Ответы с готовыми решениями:

Пузырьковая сортировка массива
Отсортировать положительные элементы одномерного массива, отрицательные оставить на местах....

Пузырьковая сортировка массива
Здравствуйте.Подскажите пожалуйста как сортировать числа ввиденные в поле Memo?Например ввели...

Пузырьковая сортировка одномерного массива
int n; Console.WriteLine(&quot;Sortirovka massiva!&quot;); Console.WriteLine(&quot;Dlina massiva=&quot;); n =...

Пузырьковая сортировка двумерного массива
Как-то подзабыл сортировку двумерного массива. Попросили нарисовать в примитивном виде. Посмотрел...

7
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
16.02.2016, 15:20 2
Лучший ответ Сообщение было отмечено vikiroy как решение

Решение

Цитата Сообщение от vikiroy Посмотреть сообщение
делать обычно константный размер массива
в рамках приличия, и по стандарту(наверное) он обязан быть константным. Но в некоторых иде разрешено и не константный.

Цитата Сообщение от vikiroy Посмотреть сообщение
i<size;
Цитата Сообщение от vikiroy Посмотреть сообщение
a[i+1];
выход за массив.

Добавлено через 4 минуты
будет полезно:
Очередная сортировка пузырьком
1
67 / 5 / 3
Регистрация: 30.11.2015
Сообщений: 170
16.02.2016, 15:22  [ТС] 3
i<size;
выход за массив
не могу понять, это про pass = 1?
будет полезно:
Очередная сортировка пузырьком
Спасибо! но я пока-что должен сам придумать модификацию сортировки)
0
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
16.02.2016, 15:26 4
Цитата Сообщение от vikiroy Посмотреть сообщение
не могу понять, это про pass = 1?
типо оптимизация.
C++
1
2
3
4
5
6
7
8
  for (int i=n-1; i>=0; i--)  
    for (int j=0; j<i; j++)    
      if (a[j] > a[j+1])
      {
        int tmp = a[j];
        a[j] = a[j+1];
        a[j+1] = tmp;
      }
http://edunow.su/site/content/... ka_massiva


C++
1
2
3
4
for(int i=0; i<n; ++i)
    for(int j=i+1; j<n; ++j)
       if(a[j]<a[i])
          swap(a[i],a[j]);
1
67 / 5 / 3
Регистрация: 30.11.2015
Сообщений: 170
16.02.2016, 15:39  [ТС] 5
Спасибо! Очень интересный материал!

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for (int i=n-1; i>=0; i--)  
    for (int j=0; j<i; j++)    
      if (a[j] > a[j+1])
      {
        int tmp = a[j];
        a[j] = a[j+1];
        a[j+1] = tmp;
      }
 
 
for(int i=0; i<n; ++i)
    for(int j=i+1; j<n; ++j)
       if(a[j]<a[i])
          swap(a[i],a[j]);
все классно! спасибо большое! но единственное можно попросить больше не скидывать готовый код! мне нужно было наверное в теме указать, ступил, блин...
1
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
16.02.2016, 15:43 6
Цитата Сообщение от vikiroy Посмотреть сообщение
больше не скидывать готовый код!
хе-хе, правильный подход!
1
67 / 5 / 3
Регистрация: 30.11.2015
Сообщений: 170
16.02.2016, 15:47  [ТС] 7
хе-хе, правильный подход!
я уже просто убедился на личном опыте, что таким способом понимаешь тему гораздо лучше, иногда процесс тормозит из-за поиска собственного решения, но зато потом осознаешь что понял ту или иную вещь до самого корня!)
1
zer0mail
16.02.2016, 16:01     Пузырьковая сортировка с константным размером массива
  #8

Не по теме:

Цитата Сообщение от vikiroy Посмотреть сообщение
все классно! спасибо большое! но единственное можно попросить больше не скидывать готовый код! мне нужно было наверное в теме указать, ступил, блин...
Логично. На форуме полно халявщиков, которым только готовый код и нужен (или решение, да еще с объяснениями) :)

0
16.02.2016, 16:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.02.2016, 16:01
Помогаю со студенческими работами здесь

Пузырьковая сортировка двумерного массива
Задан 2-й массив. Требуется отсортировать каждую строку по убыванию.Сортировка пузырьковая должна...

Упорядочивание массива по возрастанию (пузырьковая сортировка)
Подскажите пожалуйста как упорядочить элементы одномерного массива,состоящего из N вещественных...

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

Расположить элементы массива по возрастанию (пузырьковая сортировка не работает)
нужно расположить элементы массива по возврасттанию, хотел воспользоваться пузырьковой сортировкой,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru