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

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

Войти
Регистрация
Восстановить пароль
 
randy92
7 / 7 / 2
Регистрация: 23.04.2014
Сообщений: 59
#1

Сортировка выборкой - C++

10.05.2014, 14:53. Просмотров 955. Ответов 1
Метки нет (Все метки)

Задача:
Сортировка выборкой анализирует массив, отыскивая наименьший элемент массива. Затем этот наименьший элемент обменивается местами с первым элементом массива. Процесс повторяется для подмассива, начинающегося со второго элемента массива. В результате каждого прохода один из элементов занимает соответствующее место. Эта сортировка по производительности сравнима с пузырьковой — для массива из п элементов нужно выполнить п — 1 проход, а для каждого подмассива нужно выполнить п - 1 сравнение для определения наименьшего значения. Когда обрабатываемый подмассив будет содержать только один элемент, значит массив отсортирован. Напишите рекурсивную функцию selectionSort, выполняющую этот алгоритм.

Решение:

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
int selectionSort( int[ ], int );
 
int main()
{
    const int arraySize = 10;
    int a[ arraySize ] = { 4, 6, 5, 43, 78, 79, 42, 32, 1, 90 };
 
   return 0;
}
 
int selectionSort( int arr[ ], int sizeOfArray )
{
    static int counter = 0; // Считает количество рекурсий функции
    int lowest = arr[ counter ]; // Временно сохраняем наименьшее в произвольном эл.
    int temp;
    int position;
 
    for( int i = 0; i < sizeOfArray; i++ ) //Сканируем массив и ищем наименьшее
    {
        if( arr[ i ] < lowest )
        {
            lowest = arr[ i ]; 
            position = i;  //Запоминаем позицию наименьшего
        }
    }
 
    temp = arr[ counter ];    //
    arr[ counter ] = lowest;  // Меняем местами наименьшее и первый элемент
    arr[ position ] = temp;   //
 
    counter++;
 
    if( counter == sizeOfArray ) //Проверка условия. Если массив отсортирован
            return arr[ sizeOfArray ]; // Возвращаем массив
    else
        return selectionSort( arr[ sizeOfArray ], sizeOfArray ); // Иначе опять запускаем функцию
}
В результате компиляции выдает 2 ошибки в строчках:
C++
1
return selectionSort( arr[ sizeOfArray ], sizeOfArray );
C++
1
static int counter = 0;
Как их исправить?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2014, 14:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка выборкой (C++):

Сортировка выборкой - C++
В книге упражнение сделать сортировку выборкой. Сортировка получается , только почему то появляется еще одно число. Не пойму откуда оно...

Сортировка выборкой. Рекурсивный метод - C++
Код моей функции, но он мне не нравится из-за трех переменных. Ненавижу что-то добавлять. Так как по заданию мне нужно было начинать с...

Отсортировать массив тремя способами: пузырьковым, выборкой, вставками - C++
написать програму где даётся не отсортированная последовательность в массиве,нужно отсортировать 3 способами...

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

Сортировка Шелла. Написал программу, не могу понять, почему сортировка не выполняется - C++
Программа создает динамический массив с рандомным заполнением. Дальше выбор сортировок, пузырьком или сортировка Шелла. Вот она то и не...

Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом? - C++
Помогите, пожалуйста, разобраться. Подскажите в каком куске кода происходит сортировка и каким именно образом? #include &lt;iostream&gt; ...

1
_script_
170 / 138 / 34
Регистрация: 01.05.2012
Сообщений: 414
10.05.2014, 15:44 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от randy92 Посмотреть сообщение
Как их исправить?
Вот так:

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
int selectionSort( int[ ], int );
 
int main()
{
    const int arraySize = 10;
    int a[ arraySize ] = { 4, 6, 5, 43, 78, 79, 42, 32, 1, 90 };
    selectionSort(a,10);
    for (int i=0; i<10; i++)
        cout << a[i]<<' ';
   return 0;
}
 
int selectionSort( int arr[ ], int sizeOfArray )
{
    static int counter = 0; // Считает количество рекурсий функции
    int lowest = arr[ counter ]; // Временно сохраняем наименьшее в произвольном эл.
    int temp;
    int position=counter;
 
    for( int i = counter; i < sizeOfArray; i++ ) //Сканируем массив и ищем наименьшее
    {
        if( arr[ i ] < lowest )
        {
            lowest = arr[ i ];
            position = i;  //Запоминаем позицию наименьшего
        }
    }
 
    temp = arr[ counter ];    //
    arr[ counter ] = lowest;  // Меняем местами наименьшее и первый элемент
    arr[ position ] = temp;   //
 
    counter++;
 
    if( counter == sizeOfArray ) //Проверка условия. Если массив отсортирован
            return arr[ sizeOfArray ]; // Возвращаем массив
    else
        return selectionSort( arr, sizeOfArray ); // Иначе опять запускаем функцию
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2014, 15:44
Привет! Вот еще темы с ответами:

Быстрая сортировка (сортировка Хоара) для связных списков - C++
есть у кого готовый алгоритм? или подскажите как реализовать

Быстрая сортировка(сортировка Хоара). Отсортировать фрагмент массива - C++
Мне нужно отсортировать фрагмент массива, расположенный между первым и последним отрицательным элементом. Немогу понять как устоновить...

Сортировка Шелла и пирамидальная сортировка для символов - C++
Здраствуйте, можете пожалуйста привести пример сортировок шелла и пиромидальной сортировки для символов, а то ничего не могу ...

2 сортировки: пирамидальная сортировка и сортировка слиянием - C++
Реализовать два улучшенных алгоритма сортировки. Для каждого алгоритма вычислить показатель качества сортировки (количество операций, т.е....


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

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

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