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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.89
fygaska
4 / 4 / 1
Регистрация: 18.10.2010
Сообщений: 27
#1

Варианты сортировок - C++

23.12.2010, 15:30. Просмотров 4482. Ответов 4
Метки нет (Все метки)

Здравствуйте! Вот есть два способа сортировки:
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
#include <iostream>
using namespace std;
int main ()
{
    const int n=20;
    int b[n];
    int i, a, j;
    for (i=0; i<n; i++)
    {
        cin>>b[i];
    }
    for (i=0; i<n-1; i++)
    {
        for (j=i+1; j<n; j++)
        {
            if(b[j]<b[i]){
            a=b[i];
            b[i]=b[j];
            b[j]=a;
            }
        }
    }
    for (i=0; i<n; i++)
    {
        cout<<b[i]<<" ";
    }
    return 0;
}
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
#include <iostream>
using namespace std;
int main ()
{
    const int n=20;
    int b[n];
    int i, a, j;
    for (i=0; i<n; i++)
    {
        cin>>b[i];
    }
    for (i=0; i<n-1; i++)
    {
        int imin=i;
        for (j=i+1; j<n; j++)
        {
            if(b[j]<b[imin]) imin=j;
            a=b[i];
            b[i]=b[imin];
            b[imin]=a;
            
        }
    }
    for (i=0; i<n; i++)
    {
        cout<<b[i]<<" ";
    }
    return 0;
}
Они делают одно и тоже, но во втором случае добавлены некоторые присваивания. Второй пример взят из учебника. А первый - отредоктированный второй, я просто выкинул лишние выражения. объясните пожалуйста для чего они были нужны, может зря я их выкинул. И почему условие, написано как то странно, никак не могу его разобрать. В нем нет фигурных скобок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2010, 15:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Варианты сортировок (C++):

3 вида сортировок - C++
Добрый вечер, помогите решить лабораторную. Мне надо написать программу которая сортирует одномерный массив методом выбора, пузырька и...

Алгоритмы сортировок - C++
Добрый день. Если у кого есть, просьба выложить коды следующих сортировок: Пирамидальная сортировка. Сортировка подсчетом Простое...

меню сортировок - C++
Первый case работает хорошо.а два последних не хотят... #include&lt;iostream&gt; #include&lt;ctime&gt; using namespace std; void main() { ...

ЛР: Сравнение сортировок - C++
нужно экспериментально сравнить временную сложность и провести качественный анализ трех сортировок: выбором шейкерная слиянием...

Алгоритмы сортировок - C++
Недавно была необходимость сравнить некоторые алгоритмы сортировок... Если кому-нибудь понадобятся... вообщем вот... Алгоритмы...

Несколько сортировок - C++
Пишу программу, которая сортирует матрицу случайных значений пятью сортировками. Для A&gt;B Программа работает на &quot; Ура&quot;. Но как B&gt;A...

4
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
23.12.2010, 16:37 #2
fygaska, Во второй сортировке ошибка. Ваш вариант будет сортировать. Скорее всего второй вариант подрузамевался таким:
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
#include <iostream>
using namespace std;
int main ()
{
    const int n=20;
    int b[n];
    int i, a, j;
    for (i=0; i<n; i++)
    {
        cin>>b[i];
    }
    for (i=0; i<n-1; i++)
    {
        int imin=i;
        for (j=i+1; j<n; j++)
            if(b[j]<b[imin]) imin=j;
        a=b[i];
        b[i]=b[imin];
        b[imin]=a;
    }
    for (i=0; i<n; i++)
    {
        cout<<b[i]<<" ";
    }
    return 0;
}
0
fygaska
4 / 4 / 1
Регистрация: 18.10.2010
Сообщений: 27
23.12.2010, 17:01  [ТС] #3
я так понял, если при цикле или при условии нет фигурных скобок, то к ним относится только:
-следующая строка (только одна)
-выражение до знака ";"
правильно понял?

Добавлено через 5 минут
да и смысл впрнципе не в этом. Вопрос в том, зачем делать лишнии присваивания. Для чего они нужны. Разве при первом варианте не проще будет?
0
valeriikozlov
Эксперт С++
4675 / 2501 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
23.12.2010, 17:07 #4
Цитата Сообщение от fygaska Посмотреть сообщение
правильно понял?
лучше так:
-строка до знака ";"

Добавлено через 5 минут
Цитата Сообщение от fygaska Посмотреть сообщение
Разве при первом варианте не проще будет?
Вот именно в первом варианте у Вас лишние присваивания.
Цитата Сообщение от fygaska Посмотреть сообщение
for (i=0; i<n-1; i++)
{
for (j=i+1; j<n; j++)// в этом цикле при каждом новом проходе (при каждом новом i) на место b[i] ставится несколько элементов из оставшейся части массива
{
if(b[j]<b[i]){
a=b[i];
b[i]=b[j];
b[j]=a;
}
}
}
C++
1
2
3
4
5
6
7
8
9
  for (i=0; i<n-1; i++)
    {
        int imin=i;
        for (j=i+1; j<n; j++)// а здесь просто ищется индекс минимального элемента из оставшейся части массива, но ничего не переставляется
            if(b[j]<b[imin]) imin=j;
        a=b[i];// а вот здесь перестановка одна единственная при каждом новом i
                b[i]=b[imin];
                b[imin]=a;
        }
1
fygaska
4 / 4 / 1
Регистрация: 18.10.2010
Сообщений: 27
23.12.2010, 17:25  [ТС] #5
Эврика!!!!
До меня дошло! Понял!!!
0
23.12.2010, 17:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2010, 17:25
Привет! Вот еще темы с ответами:

Сравнение сортировок - C++
Помогите с подсчетом количества сравнений в сортировках. Проблема заключается в том, что количество операций у сортировок практически...

Алгоритмы сортировок - C++
Наиболее часто задаваемые вопросы по С++. Реализация распространенных алгоритмов, решения типовых задач. Статьи и учебники C++ ...

Алгоритмы сортировок массива - C++
Помогите пожалуйста написать программу на с++, которая будет содержать разные сортировки массива( для всех сортировок случайным образом...

Сравнение алгоритмов сортировок - C++
Добрый день всем! Интересует вопрос об оптимизации алгоритмов сортировки: пузирька, пузирька оптимиз. и Шейкера. Подскажите: 1) Как...


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

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

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