Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/63: Рейтинг темы: голосов - 63, средняя оценка - 4.76
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562

Сортировка выбором. Рекурсия

08.08.2010, 02:47. Показов 13216. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дичайше туплю... Нужна сортировка выборкой одномерного массива. Рекурсией. Итерацией могу сделать. Рекурсией - никак... Застопорило что-то. Буду благодарен за подсказку и помощь.

Добавлено через 6 минут
Вот обычная сортировка выбором с помощью итераций...

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
#include <iostream>
#include <ctime>
 
void selectionSort(int Arr[], int size); 
 
int main()
{
    srand(time(NULL));
    const int Size=10;
    int Arr[Size];
    for(int i=0;i<Size;++i)
        Arr[i]=1+rand()%100-1+1;
    std::cout<<"Arr is:\n";
    for(int i=0;i<Size;++i)
    {
        std::cout<<Arr[i]<<' ';
    }
    std::cout<<std::endl;
    selectionSort(Arr, Size);
    return 0;
}
 
void selectionSort(int Arr[], int size)
{
    int k=0, x=0;
    for(int i=0; i < size; i++) 
    { 
        k=i; x=Arr[i];
        for(int j=i+1; j < size; j++) 
        if (Arr[j] < x) 
        {
            k=j; x=Arr[j]; 
        }
        Arr[k] = Arr[i]; 
        Arr[i] = x;
    }
    std::cout<<"Sorted array:\n";
    for(int i=0;i<size;++i)
        std::cout<< Arr[i] <<' ';
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.08.2010, 02:47
Ответы с готовыми решениями:

Сортировка выбором
Разбираю сортировку выбором. Как реализовать сортировку по возрастанию понял, а как реализовать сортировку по возрастанию до первого...

Сортировка выбором
Помогите тут сделать сортировку выбором for (i = 0; i&lt;n; i++) { for (j = 0; j&lt;n; j++) { if (arr&gt;arr) { ...

Сортировка выбором
Что не так с сортировкой простого выбора????((( #include &lt;iostream&gt; using namespace std; int ND(int number) { int i; ...

26
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
09.08.2010, 01:43
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Lavroff Посмотреть сообщение
Продолжение будет?) Только желательно без матана/алгебры) Скоро итак учеба уже)
вот и готовься

Имеются числа 1, 2, 3, 4, 5. Сколькими способами, суммируя эти числа, можно получить 6, если каждое слагаемое можно использовать не более одного раза? Порядок суммирования не играет роли.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
09.08.2010, 01:46  [ТС]
fasked, 1+2+3, 1+5, 4+2. Или это программу такую написать?)
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
09.08.2010, 01:51
Цитата Сообщение от Lavroff Посмотреть сообщение
fasked, 1+2+3, 1+5, 4+2. Или это программу такую написать?)
ахах а ты как думал, еще и рекурсивно!
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
09.08.2010, 02:18  [ТС]
fasked, Я вот думаю, какое условие выхода из функции тогда поставить оО

Ради шутки) Рекурсивно) И по данной задаче

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
int count(int size);
 
int main()
{
    int size=3;
    std::cout<< count(size) << '\n';
    return 0;
}
 
int count(int size)
{
    static int cnt=0;
    if(size==0)
        return cnt;
    else
    {
        cnt++;
        count(size-1);
    }
}
Добавлено через 24 минуты
Нет. Что-то ничего придумать не могу... Только если тупо перебором...
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
09.08.2010, 02:57
Цитата Сообщение от Lavroff Посмотреть сообщение
Только если тупо перебором...
первое, что может прийти в голову, это конечно простой перебор.
для решения таким путем необходимо из данного множества составить все возможные множества.
то есть, например, есть множество { 1,2,3 }. для него всеми возможными множествами будут { 1 }, { 2 }, { 3 }, { 1, 2 }, { 1, 3 }, { 2, 3 }. далее необходимо просто найти сумму элементов каждого подмножества.
в контексте данной задачи можно исключить все подмножества из одного элемента.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
09.08.2010, 03:00  [ТС]
fasked, О май год. Множества. М... Оригинально. Попробую быть может)
Т.е. все возможные k-элементные подмножества? В данном случае {1,2,3,4,5}, {1,2,3,4}, {2,3,4,5}, {1,3,4,5}, {1,2,4,5}, {1,2,3}, {2,3,4} {3,4,5}, {1,2,4}, {1,2,5}, {2,3,5}, {1,2}, {1,3}, {1,4}, {1,5}, {2,3}, {2,4}, {2,5}, {3,4}, {3,5}, {4, 5}.
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
09.08.2010, 03:06
Цитата Сообщение от Lavroff Посмотреть сообщение
Множества
Еще подсказка для перебора. Все возможные подмножества можно сгенерировать примерно так:
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>
#include <cmath>
 
using namespace std;
 
void main()
{
   int p[] = {1, 2, 3, 4, 5};
   int n = sizeof(p)/sizeof(int);
   int m = (int)pow((double)2, n);
 
   for (int i=0; i<m; ++i)
   {
      bool sep=false;
      cout << "{";
      for (int d=0; d<n; ++d)
      {
         if ((1<<d)&i)
         {
            cout << (sep ? ", " : "") << p[d];
            sep = true;
         }
      }
      cout << "}\n";
   }
 
   system("PAUSE");
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.08.2010, 03:06

Сортировка выбором
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; #include &lt;cstdlib&gt; using namespace std; void SetRussianLocale() {...

Сортировка выбором
Здравствуйте товарищи. Есть к вам одни вопрос. Есть задание- . Дана целочисленная квадратная матрица. Определить: • номер строки, в...

Сортировка выбором
#include &quot;stdafx.h&quot; #include&quot;iostream&quot; #include&quot;time.h&quot; using namespace std; int main() {srand(time(0)); int a, n, k, q,j; ...

сортировка выбором
помогите пожалуйста, алгоритм не работает то есть не сортирует #ifndef FUNC #define FUNC #include &quot;vibor.h&quot; #include...

Сортировка выбором
Информатика 1 курс, прошу помочь с написанием кода программы: Сортировка выбором. Выбирается максимальный элемент из оставшихся и...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
BitTorrent (версия 7.11 English) и Меню Настройки
russiannick 15.11.2026
Пункты, отвечающие за отключение обновлений в BitTorrent версии 7. 11 (английской) Options Preferences General Language
Транслитерация текста с кириллицы на латиницу (вариант №4)
Maks 15.11.2026
Что-то я перемудрил с предыдущими версиями, в этот раз сделал всё проще, обратившись к функции "СтрокаЛатиницей" из типового общего модуля "СтроковыеФункцииКлиент". В данной функции нет апострофов,. . .
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы. Карта этого меню приложена ниже. Нужный пункт выделен красным. Сервис Настройки Поведение
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки. Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён". Изменено отображение буквы Й. Добавлена. . .
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru