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

сортировка массива выбором - C++

Восстановить пароль Регистрация
 
wolf
2 / 2 / 1
Регистрация: 17.09.2012
Сообщений: 860
18.06.2013, 20:00     сортировка массива выбором #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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "stdafx.h"
#include "iostream"
#include "time.h"
#include "iomanip"
 
using namespace std;
 
void ChoicesSort(int*, int); // объявление функции сортировки
 
int main()
{
setlocale(LC_ALL, "Russian");
int n; // Количество элементов массива
cout << "Введите размер массива: ";
cin >> n;
cout << endl;
cout << "Массив: " << endl;
int *mas = new int [n]; 
srand(time(NULL));
for (int i = 0; i < n; i++)
{
mas[i] = rand() % 200 - 100; // заполняем массив случайными числами
cout << mas[i] << " "; // выводим массив на экран
}
cout << "\n\n";
 
ChoicesSort(mas, n); // вызываем функцию сортировки Выбором
cout << "Отсортированный массив: " << endl;
for (int i = 0; i < n; i++)
{
cout << mas[i] << " "; // Вывод на экран отсортированного массива
}
cout << "\n";
system("PAUSE");
return 0;
}
 
void ChoicesSort(int* Perestanovka, int length) // сортировка Выбором
{
for (int j = 0; j < length; j++)
{
int temp = Perestanovka[0]; // временная переменная, храненящая значения перестановки
for (int z = j + 1; z < length; z++)
{
if (Perestanovka[j] > Perestanovka[z])
{
temp = Perestanovka[j]; 
Perestanovka[j] = Perestanovka[z];
Perestanovka[z] = temp;
}
}
}
}
Добавлено через 2 минуты
и подскажите пожалуйста ещё, для чего записывается, временная переменная хранящая значения перестановки?
int temp = Perestanovka[0]; // временная переменная, храненящая значения перестановки
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2013, 20:00     сортировка массива выбором
Посмотрите здесь:

C++ Сортировка выбором на с++
Сортировка массива выбором C++
C++ Сортировка выбором
сортировка выбором простого массива C++
Сортировка выбором столбцов двумерного массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,411
18.06.2013, 20:01     сортировка массива выбором #2
Цитата Сообщение от wolf Посмотреть сообщение
#include "stdafx.h"
#include "iostream"
#include "time.h"
#include "iomanip"
сразу нет. Почитайте как включают стандартные заголовочные файлы.

Отступов нет, дальше не смотрел. Но называть функции с заглавной буквы - моветон
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
18.06.2013, 20:03     сортировка массива выбором #3
алгоритм верный, а это
Цитата Сообщение от wolf Посмотреть сообщение
int temp = Perestanovka[0];
излишне
при этом сам алгоритм не из лучших, он не учитывает упорядоченность массива
wolf
2 / 2 / 1
Регистрация: 17.09.2012
Сообщений: 860
18.06.2013, 20:04  [ТС]     сортировка массива выбором #4
MrGluck хм где должны быть отступы? вроде так везде

#include "stdafx.h"
#include "iostream"
#include "time.h"
#include "iomanip"
заглавных ведь букв тут нету)

Добавлено через 39 секунд
как грамотней его написать?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
18.06.2013, 20:07     сортировка массива выбором #5
Цитата Сообщение от wolf Посмотреть сообщение
как грамотней его написать?
скажем так. алгоритм, который вы привели, для детей детского сада. смотрите в сторону тех сортировок, которые учитывают упорядоченность (например, шейкерная, оптимизированная пузырьковая), далее смотрите в сторону быстрой сортировки, пирамидальной, далее в сторону сортировки подсчетом и т.д
wolf
2 / 2 / 1
Регистрация: 17.09.2012
Сообщений: 860
18.06.2013, 20:09  [ТС]     сортировка массива выбором #6
ну мне по сути сильно мудренный ненужен)))
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
18.06.2013, 20:10     сортировка массива выбором #7
Цитата Сообщение от wolf Посмотреть сообщение
ну мне по сути сильно мудренный ненужен)))
возьмите оптимизированный пузырьковый алгоритм и то получше будет, алгоритм проще некуда.
wolf
2 / 2 / 1
Регистрация: 17.09.2012
Сообщений: 860
18.06.2013, 21:59  [ТС]     сортировка массива выбором #8
ща гляну, спасиб)

Добавлено через 1 час 47 минут
подскажите почему не работает когда вот это

C++
1
2
3
4
cout << "\n";
system("PAUSE");
return 0;
}
заменяю на это

C++
1
2
3
4
cout << "\n";
_getch();
return (0);
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,411
18.06.2013, 22:28     сортировка массива выбором #9
Цитата Сообщение от wolf Посмотреть сообщение
MrGluck хм где должны быть отступы? вроде так везде
ну например вот так ведь лучше будет
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
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <conio.h>
#include <clocale>
 
using namespace std;
 
void ChoicesSort(int*, int); // объявление функции сортировки
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n; // Количество элементов массива
    cout << "Введите размер массива: ";
    cin >> n;
    cout << endl;
    cout << "Массив: " << endl;
    int *mas = new int [n];
    srand(time(NULL));
    for (int i = 0; i < n; i++)
    {
        mas[i] = rand() % 200 - 100; // заполняем массив случайными числами
        cout << mas[i] << " "; // выводим массив на экран
    }
    cout << "\n\n";
 
    ChoicesSort(mas, n); // вызываем функцию сортировки Выбором
    cout << "Отсортированный массив: " << endl;
    for (int i = 0; i < n; i++)
    {
        cout << mas[i] << " "; // Вывод на экран отсортированного массива
    }
    cout << "\n";
    getch();
    return 0;
}
 
void ChoicesSort(int* Perestanovka, int length) // сортировка Выбором
{
    for (int j = 0; j < length; j++)
    {
        int temp = Perestanovka[0]; // временная переменная, храненящая значения перестановки
        for (int z = j + 1; z < length; z++)
        {
            if (Perestanovka[j] > Perestanovka[z])
            {
                temp = Perestanovka[j];
                Perestanovka[j] = Perestanovka[z];
                Perestanovka[z] = temp;
            }
        }
    }
}
Далее, обратите внимание на то, что заголовочные файлы обрамлены угловыми скобками, а не кавычками. В кавычках записывают пользовательские файлы.
Также заметьте, что добавлен cstdlib. Именно в нем содержаться функции srand, rand, system. iomanip здесь не нужен, а в conio.h содержится объявление функции _getch(). Вместо устаревшего сишного time.h используется ctime. Для управления локалью требуется файл clocale, и не говорите мне, что работает без него, нет никаких гарантий, что он подцепится хедером iostream.

Сразу после расстановок код стало можно читать. И сразу становится видно, что память вы не освобождаете.
delete [] mas; перед выходом с main (перед return).
Цитата Сообщение от wolf Посмотреть сообщение
заглавных ведь букв тут нету)
а тут
Цитата Сообщение от wolf Посмотреть сообщение
void ChoicesSort(int*, int);
есть
функцию надо бы назвать сhoicesSort, хотя лучше sortChoises (дело вкуса)

И последнее: вот вам пузырек, с ним разбирайтесь
C++
1
2
3
4
5
6
7
8
9
10
11
void bubbleSort(int *arr, const size_t size)
{
    for (size_t i=0; i < size; i++)
        for (size_t j = size-1; j > i; j--)
            if (arr[j] < arr[j-1] )
            {
                int tmp = arr[j];
                arr[j] = arr[j-1];
                arr[j-1] = tmp;
            }
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
18.06.2013, 22:37     сортировка массива выбором #10
я за пузырек с контролем упорядоченности:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void BubbleSort(int *a, const int n)
{
   int i, left = 0, flag, buf;
   do
   {
      flag = 0;
      for(i = n - 1; i > left; i--)
         if (a[i-1] > a[i])
         {
            buf = a[i]; a[i] = a[i-1]; a[i-1] = buf;
            flag = 1;
         }
      left++;
   }
   while(flag);
}
wolf
2 / 2 / 1
Регистрация: 17.09.2012
Сообщений: 860
18.06.2013, 23:48  [ТС]     сортировка массива выбором #11
спасибо огромное ребят за помощь))))

Добавлено через 55 секунд
я тож за пузырек ну я пишу курсовую работу по данному коду, а если менять код, то надо переписывать всю курсовую поэтому не вариант)
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,411
19.06.2013, 11:59     сортировка массива выбором #12
wolf, ишь какой нежный, мы курсовую раз по 7 переписывали. Достаточно было лишь одного слова случайно в Arial вместо Times New Roman или выравнивания по левому краю вместо ширины и давай гуляй.

Я бы за такой код послал на переработку. Причины (ошибки) описал выше. Более того, сортировка ваша - прямой прецедент на минус бал. Хотя если все на ней вертится, то минус два бала.

P.S. ну и кода у нас было несколько к, а у вас тут смешно даже озвучить.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 12:08     сортировка массива выбором #13
Цитата Сообщение от wolf Посмотреть сообщение
если менять код, то надо переписывать всю курсовую поэтому не вариант
если вы спрашивали
Цитата Сообщение от wolf Посмотреть сообщение
подскажите пожалуйста ещё, для чего записывается, временная переменная хранящая значения перестановки?
int temp = Perestanovka[0]; // временная переменная, храненящая значения перестановки
то сортировку скачали где-то и просто вставили в код программы, да еще и не разобрались с ней. разве это курсовая...
wolf
2 / 2 / 1
Регистрация: 17.09.2012
Сообщений: 860
19.06.2013, 23:29  [ТС]     сортировка массива выбором #14
Цитата Сообщение от Thinker Посмотреть сообщение
то сортировку скачали где-то и просто вставили в код программы, да еще и не разобрались с ней. разве это курсовая...
разобрался полностью с кодом и курсовую сдал)))
wolf
2 / 2 / 1
Регистрация: 17.09.2012
Сообщений: 860
21.06.2013, 20:29  [ТС]     сортировка массива выбором #15
да код взял из инета, потом разберался в нем, просто было не понятно про перестановку
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2013, 20:35     сортировка массива выбором
Еще ссылки по теме:

Сортировка строк двумерного массива выбором. Не обновляются значения C++
C++ Сортировка выбором
C++ Сортировка выбором

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
21.06.2013, 20:35     сортировка массива выбором #16
Цитата Сообщение от wolf Посмотреть сообщение
да код взял из инета
это абсолютно нормально, не все же изобретать велосипеды, главное, разбираться и двигаться вперед
Yandex
Объявления
21.06.2013, 20:35     сортировка массива выбором
Ответ Создать тему

Метки
Сортировка выбором, сортировка выбором c++, сортировка массива, сортировка массива c++, сортировка массива выбором c++, сортировка массива выбором
Опции темы

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