Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Visual C
0 / 0 / 0
Регистрация: 18.05.2011
Сообщений: 8
#1

Сортироввка пузырьком. - C++

12.09.2011, 12:22. Просмотров 417. Ответов 8
Метки нет (Все метки)

Есть прога:
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <iostream>
#include <conio.h>
using namespace std;
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{const int n=10;
        int a[n]={2, 56, 78, 6, 93, 4, 33, 71, 61, 50};
        int i,j,y;
        int k=0;
 
        for(i=1;i<n-1;i++)
        {
         for(j=n-1;j>i-1;j--)
                if(a[j-1]>a[j])
                {
                y=a[j];
                a[j]=a[j-1];
                a[j-1]=y;
                }
                k++;
        }
        cout<<"Chislo shagov:"<<k<<endl;
        getch();
        return 0;
}
//---------------------------------------------------------------------------
Нужно сделать так, чтобы программа не делала лишних шагов. Т.е. если в массиве все элементы расставить по порядку то к(число шагов) должно быть 0.

Добавлено через 3 минуты
Забыл написать вывод массива.Вот:
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <iostream>
#include <conio.h>
using namespace std;
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{const int n=10;
        int a[n]={2, 56, 78, 6, 93, 4, 33, 71, 61, 50};
        int i,j,y;
        int k=0;
 
        for(i=1;i<n-1;i++)
        {
         for(j=n-1;j>i-1;j--)
                if(a[j-1]>a[j])
                {
                y=a[j];
                a[j]=a[j-1];
                a[j-1]=y;
                }
                k++;
        }
        cout<<"Chislo shagov:"<<k<<endl;
        for(i=0;i<n;i++)
        {
        cout<<a[i]<<"  ";
        }
        getch();
        return 0;
}
//---------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2011, 12:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сортироввка пузырьком. (C++):

Сортировка пузырьком
Не удается сделать сортировку пузырьком (то что после //1111), не сортирует,...

Сортировка пузырьком
Здравствуйте. Подскажите пожалуйста, написал простой код который должен...

Сортировка пузырьком
Как сделать пошаговый вывод сортировки? #include &lt;iostream&gt; #include...

Сортировка пузырьком
Привет всем! У меня по методу вопросов нет, успешно отсортировал от меньшего к...

Сортировка пузырьком
Правильно ли организую ввод размера массива через клавиатуру?Если...

сортировка пузырьком
#include &lt;iostream&gt; using namespace std; void main() { const n=4; int...

8
voral
850 / 559 / 114
Регистрация: 16.03.2008
Сообщений: 2,575
12.09.2011, 13:18 #2
Тегами форматирования слабо оформить код?

Цитата Сообщение от Visual C Посмотреть сообщение
Нужно сделать так, чтобы программа не делала лишних шагов. Т.е. если в массиве все элементы расставить по порядку то к(число шагов) должно быть 0.
Это как? В приведённом выше коде k считает сколько раз сравнили. Чтобы оно осталось равным 0 мы должны НЕ выполнить ни одного сравнения. Единственный шанс вести отсортированный массив. И тогда нам не нужен алгоритм сортировки. Если же массив на входе может быть любым, то мы должны каждое число хотябы раз сравнить с другим.

Добавлено через 3 минуты
Поправка. k - это не число сравнений. Сравнений больше чем k.

Добавлено через 3 минуты
Или вам надо значть число перестановок? Тогда так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main(int argc, char* argv[])
{
  const int n=10;
  int a[n]={2, 56, 78, 6, 93, 4, 33, 71, 61, 50};
  int i,j,y;
  int k=0;
 
  for(i=1;i<n-1;i++)
  {
     for(j=n-1;j>i-1;j--)
         if(a[j-1]>a[j])
         {
            y=a[j];
                            a[j]=a[j-1];
                             a[j-1]=y;
            k++;
         }
  }
  cout<<"Chislo shagov:"<<k<<endl;
  getch();
  return 0;
}
1
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,295
Записей в блоге: 2
Завершенные тесты: 1
12.09.2011, 17:29 #3
если проверять массив на упорядоченость, потеряем больше времени
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
12.09.2011, 22:52 #4
Что же многих так на пузырьковую сортировку тянет. Это не хорошая сортировка. Ну если уж нужна, то хоть без лишних шагов:
Пузырьковая сортировка
или сделайте из нее шейкерную, все же лучше
0
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,295
Записей в блоге: 2
Завершенные тесты: 1
13.09.2011, 00:10 #5
лучше использовать встроенную: быстрая (довольно) и писать не надо.
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.09.2011, 00:14 #6
Цитата Сообщение от Dani Посмотреть сообщение
лучше использовать встроенную: быстрая (довольно) и писать не надо.
Так и не спорит никто. Не понятно почему пузырьковая так привлекает людей.
0
asics
Freelance
Эксперт С++
2854 / 1789 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
13.09.2011, 00:18 #7
Цитата Сообщение от Thinker Посмотреть сообщение
Не понятно почему пузырьковая так привлекает людей.
Каких людей ? Студентов, в которых она попалась как задание в лабораторной ? Это не показатель.
0
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,295
Записей в блоге: 2
Завершенные тесты: 1
13.09.2011, 00:21 #8
Цитата Сообщение от asics Посмотреть сообщение
Не понятно почему пузырьковая так привлекает людей.
Думаю, студентов от написания сортировки ташнит (если не пузырьковая). Были нас на паскале заставили qsort рекурскивную учить... Помнил целых 3 дня
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.09.2011, 00:26 #9
Цитата Сообщение от asics Посмотреть сообщение
Каких людей ? Студентов, в которых она попалась как задание в лабораторной ? Это не показатель.
Тех людей, в частности, которые обращаются за помощью сюда с этой сортировкой. Ну, по поводу "привлекает", может погорячился
0
13.09.2011, 00:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2011, 00:26
Привет! Вот еще темы с решениями:

Сортировка пузырьком.
Приветствую, тех кто заглянул в топик. Помогите, пожалуйста, решить задачу на C...

сортировка пузырьком
Вечер добрый! Задача проста: отсортировать сначала по зп, если &lt; 400, то в...

Сортировка пузырьком
//--------------------------------------------------------------------------- ...

Сортировка Пузырьком
Здравствуйте! Пытался выполнить задание: Сортировка Пузырьком - один из...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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