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

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

Восстановить пароль Регистрация
 
Visual C
0 / 0 / 0
Регистрация: 18.05.2011
Сообщений: 8
12.09.2011, 12:22     Сортироввка пузырьком. #1
Есть прога:
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;
}
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2011, 12:22     Сортироввка пузырьком.
Посмотрите здесь:

C++ сортировка пузырьком
Сортировка пузырьком. C++
Сортировка пузырьком C++
Сортировка пузырьком C++
Сортировка пузырьком C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
voral
346 / 326 / 46
Регистрация: 16.03.2008
Сообщений: 1,698
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;
}
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
12.09.2011, 17:29     Сортироввка пузырьком. #3
если проверять массив на упорядоченость, потеряем больше времени
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
12.09.2011, 22:52     Сортироввка пузырьком. #4
Что же многих так на пузырьковую сортировку тянет. Это не хорошая сортировка. Ну если уж нужна, то хоть без лишних шагов:
Пузырьковая сортировка
или сделайте из нее шейкерную, все же лучше
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
13.09.2011, 00:10     Сортироввка пузырьком. #5
лучше использовать встроенную: быстрая (довольно) и писать не надо.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.09.2011, 00:14     Сортироввка пузырьком. #6
Цитата Сообщение от Dani Посмотреть сообщение
лучше использовать встроенную: быстрая (довольно) и писать не надо.
Так и не спорит никто. Не понятно почему пузырьковая так привлекает людей.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
13.09.2011, 00:18     Сортироввка пузырьком. #7
Цитата Сообщение от Thinker Посмотреть сообщение
Не понятно почему пузырьковая так привлекает людей.
Каких людей ? Студентов, в которых она попалась как задание в лабораторной ? Это не показатель.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
13.09.2011, 00:21     Сортироввка пузырьком. #8
Цитата Сообщение от asics Посмотреть сообщение
Не понятно почему пузырьковая так привлекает людей.
Думаю, студентов от написания сортировки ташнит (если не пузырьковая). Были нас на паскале заставили qsort рекурскивную учить... Помнил целых 3 дня
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2011, 00:26     Сортироввка пузырьком.
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
13.09.2011, 00:26     Сортироввка пузырьком. #9
Цитата Сообщение от asics Посмотреть сообщение
Каких людей ? Студентов, в которых она попалась как задание в лабораторной ? Это не показатель.
Тех людей, в частности, которые обращаются за помощью сюда с этой сортировкой. Ну, по поводу "привлекает", может погорячился
Yandex
Объявления
13.09.2011, 00:26     Сортироввка пузырьком.
Ответ Создать тему
Опции темы

Текущее время: 09:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru