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

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

Войти
Регистрация
Восстановить пароль
 
Scorpil
0 / 0 / 0
Регистрация: 11.11.2008
Сообщений: 5
#1

Алгоритм "нестандартной" сортировки масива - C++

11.11.2008, 18:33. Просмотров 976. Ответов 9
Метки нет (Все метки)

Задачка вот в чем:
Пользователь вводит число N. Нужно вывести на экран все комбинации чисел от 1 до N в алфавитном порядке.

Тоесть, например N=3. Вывести нужно следующее:

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

Помогите, а то замучался уже совсем...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2008, 18:33     Алгоритм "нестандартной" сортировки масива
Посмотрите здесь:

Как возможно реализовать алгоритм сортировки "выбором" для строк матрицы? - C++
Допустим мне дана динамическая матрица размерностью n на m, и надо отсортировать строки между собой по сумме их элементов. вот такую...

Реализуйте шаблонный алгоритм "быстрой сортировки" - C++
Реализуйте шаблонный алгоритм "быстрой сортировки": template<class It, class Cmp> void qsort(It beg, It end, Cmp cmp); Заранее...

Распараллелить алгоритм сортировки "пузырьком" - C++
Реализовать параллельную сортировку методом Пузырька #include <iostream> using namespace std; int main() { // Считываем...

Чтения структуры из файла (описать структуру с именем "ORDER": "счет плательщика"; "счет получателя"; "сумма, переводится банковской операцией") - C++
Описать структуру с именем "ORDER", содержащий следующие поля: "Счет плательщика"; "Счет получателя"; "Сумма, переводится банковской...

Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел - C++
Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел (т. е. следует любой символ, кроме...

Нужно доделать код! Исключить из дерева сортировки число "2" - C++
// аисд7.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> /***********...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alhimic
5 / 5 / 0
Регистрация: 16.10.2008
Сообщений: 77
11.11.2008, 18:51     Алгоритм "нестандартной" сортировки масива #2
Цитата Сообщение от Scorpil Посмотреть сообщение
Нужно вывести на экран все комбинации чисел от 1 до N в алфавитном порядке.
Как ты числа собрался выводить в алфавитном порядке?

Добавлено через 42 секунды
А вообще программа легкая. Делай счетчаком с использованием do{} while.
Scorpil
0 / 0 / 0
Регистрация: 11.11.2008
Сообщений: 5
11.11.2008, 18:52  [ТС]     Алгоритм "нестандартной" сортировки масива #3
Как ты числа собрался выводить в алфавитном порядке?
По ASCII см. пример.

Добавлено через 39 секунд
А вообще программа легкая. Делай счетчаком с использованием do{} while.
Дык хоть общий алгоритм начертай...
Alhimic
5 / 5 / 0
Регистрация: 16.10.2008
Сообщений: 77
11.11.2008, 18:57     Алгоритм "нестандартной" сортировки масива #4
Начинай с 1 и выводи числа в массив до N, а потом сортируй их.

Цитата Сообщение от Scorpil Посмотреть сообщение
По ASCII см. пример.
А если подробнее. Я в кодировках плохо разбираюсь
Scorpil
0 / 0 / 0
Регистрация: 11.11.2008
Сообщений: 5
11.11.2008, 19:03  [ТС]     Алгоритм "нестандартной" сортировки масива #5
А если подробнее. Я в кодировках плохо разбираюсь
меньшее число - меньше по алфавиту. Пример же есть...
Alhimic
5 / 5 / 0
Регистрация: 16.10.2008
Сообщений: 77
11.11.2008, 19:40     Алгоритм "нестандартной" сортировки масива #6
меньшее число - меньше по алфавиту. Пример же есть...
В примере не выполняется это(или ты считаешь, что 3 меньше 1(последняя строка примера)
А так моя идея осталась в силе.
C++
1
2
3
4
5
6
7
8
9
10
11
12
void i,m,n,k;
int main()
{
 cin << n;
m=n;
void massive[m];
do
{ 
  massive[i]=k;
  i++;  
  k++;
} while (k<=n);
А дальше сортируешь и выводишь как тебе надо.
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
12.11.2008, 09:50     Алгоритм "нестандартной" сортировки масива #7
Цитата Сообщение от Scorpil Посмотреть сообщение
Задачка вот в чем:
Пользователь вводит число N. Нужно вывести на экран все комбинации чисел от 1 до N в алфавитном порядке.

Тоесть, например N=3. Вывести нужно следующее:

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

Помогите, а то замучался уже совсем...
Тема должна звучать так: "алгоритм получения всех перестановок".. В инете навалом.
greshnikk
30 / 30 / 0
Регистрация: 05.11.2008
Сообщений: 162
12.11.2008, 09:54     Алгоритм "нестандартной" сортировки масива #8
Алгоритм елементарный.
Для начала предлагаю тебе написать такую прогу:
вводишь n, он тебе выводит все комбинации с цифрами 0 и 1, в количестве n:
Например
n = 3
0 0 0
0 0 1
0 1 0
0 1 1
...
1 1 1
.
После етого, все что тебе нужно будет, так ето чуть чуть подкорректировать программу, чтобы она использовала не 2 цифры, а количество введенных. Вот и весь алгоритм.

Д О Б А В Л Е Н О

Также надо не забыть сделать поправку на то, что в каждоый строке массива, елементы не должны повторятся.

Сейчас посидел подумал:
Вот примерное начало алгоритма:
Изначально вводим количество елементов. Далее нам надо выделить память под массив (malloc). А массив у нас будет mas[i][j], где i равно введенному числу, а вот j придется для начала вычислить. Для етого нам нужно посчитать количество комбинации с етими цифрами, и полученное число разделить на i. Посчитать количество комбинации нетрудно, для етого нужно i * на количество комбинации при i-1, например если у нас i = 2, то комбинации будет 2 * кол комбинации если бы мы ввели 1. При 1 у нас только одна комбинация, следовательно ответ = 2. При i =3, 3 * 2 = 6 комбинации. При i = 4 ,у нас 4*6 = 24 коминации и т.д.
После етого мы заполняем столбики от 0 до n, сначала первым числом, то есть 1, заполнять будем j\i раз, затем вторым, и так далее до конца. Затем переходим ко второму столбику и так де его заполняем и т.д.
leviaphan
4 / 4 / 0
Регистрация: 18.08.2008
Сообщений: 73
12.11.2008, 18:29     Алгоритм "нестандартной" сортировки масива #9
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
55
56
57
58
59
60
61
62
#include <iostream>
#include <conio.h>
using namespace std;
 
void sort (int* ar, int n)
{
    bool sorted = true;
    while (sorted)
    {
        sorted = false;
        for (int i=1; i<n; i++)
        {
            if (ar[i-1]>ar[i])
            {
                int temp = ar[i-1];
                ar[i-1] = ar[i];
                ar[i] = temp;
                sorted = true;
                break;
            }
        }
    }
}
 
int main()
{
    int n;
    cin >> n;
    int* ar = new int [n];
    for (int i=0; i<n; i++)
    {
        ar[i] = i+1;
    }
    #define last (n-1)
    #define print_ar() for (int i=0; i<n; i++) cout << ar[i]; cout << endl;
    bool changes = true;
    while (changes)
    {
        changes = false;
        for (int i=last; i>0; i--)
        {
            for (int j=i-1; j>=0; j--)
            {
                if (ar[j]<ar[i])
                {
                    print_ar();
                    int temp = ar[j];
                    ar[j] = ar[i];
                    ar[i] = temp;
                    sort(ar+j+1,n-j-1);
                    changes = true;
                    break;
                }
            }
            if (changes) break;
        }
    }
    print_ar();
    delete [] ar;
    getch();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2008, 18:52     Алгоритм "нестандартной" сортировки масива
Еще ссылки по теме:

Исследование сортировки метода "пузырек" для большого массива - C++
Нужно реализовать сортировку большого массива методом &quot;пузырек&quot; (для 100, 1.000 и 10.000 элементов). Должен присутствовать ввод...

Ошибки "E2034 Cannot convert" в программе сортировки чисел - C++
программа должна сортировать числа в строке по возрастанию, но выдает следующие ошибки: Unit1.cpp(20): E2034 Cannot convert 'char *' to...

Реализация быстрой сортировка и сортировки "сливом" - C++
Помоги те с реализацией быстрой сортировки и сортировки сливом на базовом уровне.

Наследование: "БГТУ", "Факультет", "Группа", "Подгруппа" - C++
Определить иерархию классов (в соответствии с вариантом – выделить базовый и производные). Реализовать классы (самостоятельно задать...


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

Или воспользуйтесь поиском по форуму:
Scorpil
0 / 0 / 0
Регистрация: 11.11.2008
Сообщений: 5
12.11.2008, 18:52  [ТС]     Алгоритм "нестандартной" сортировки масива #10
Всем большое спасибо, буду разбираться =)
Yandex
Объявления
12.11.2008, 18:52     Алгоритм "нестандартной" сортировки масива
Ответ Создать тему
Опции темы

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