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

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

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

Опять алгоритмы сорировки) - C++

03.12.2013, 20:51. Просмотров 347. Ответов 16
Метки нет (Все метки)

Подскажите пожалуйста какой алгоритм сортировки будет выдавать все перестановки чисел без повторений.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2013, 20:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Опять алгоритмы сорировки) (C++):

Опять файлы - C++
Если, я открыл файл записал туда данные, а потом пытаюсь читать эти данные до тех пор пока не встретится конец файл. Это будет корректно?...

опять строки - C++
Здравствуйте!Помогите пожалуйсте))Никак не получаются задачи на строки.Задача:выяснить распределение слов по длине(сколько слов,состоящих...

матрица опять ( - C++
В данной действительной квадратной матрице порядка n, найти наибольший по модулю элемент. Получить квадратную матрицу порядка n - 1 путем...

Опять static - C++
Есть два файла. ////////////////////////////////////// //main.cpp class SomeClass { public: SomeClass(REC*...

опять же строки - C++
в общем дана строка состоящая из слов разделенных пробелами, нужно поменять местами первое и последнее слова и вывести получившуюся строку...

Опять текстуры - C++
Я,наверное,всех уже достал с текстурами)Но всё же вот фрагменты кода рисовка цилиндра с текстурой glEnable(GL_TEXTURE_2D); barkn=0; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
03.12.2013, 21:01 #2
Для этого нужен не алгоритм сортировки, а алгоритм перестановки.
0
tcennoc
1 / 1 / 0
Регистрация: 22.11.2013
Сообщений: 35
03.12.2013, 21:17  [ТС] #3
Цитата Сообщение от Nick Alte Посмотреть сообщение
Для этого нужен не алгоритм сортировки, а алгоритм перестановки.
Это понятно, лексикографически, я уже сделал. Но какой еще алгоритм лучше применить для рекурсии? Пробовал обычную пузырьковую сортировку, но есть дубли.
Можно ли применить алгоритм сортировки в целях перестановки чисел.
Либо подскажите алгоритм кроме лексикографического.Не в виде программы, а пошагово.
0
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
03.12.2013, 21:24 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
По отдельности слова знакомые, но вот общий смысл совершенно теряется. Что понятно? Что лексикографически? Какая рекурсия? Зачем тут вообще сортировка?

Не по теме:

- Петька, приборы!
- Семьдесят восемь!
- Что семьдесят восемь?!
- А что приборы?!

4
tcennoc
1 / 1 / 0
Регистрация: 22.11.2013
Сообщений: 35
03.12.2013, 21:44  [ТС] #5
Цитата Сообщение от Nick Alte Посмотреть сообщение
По отдельности слова знакомые, но вот общий смысл совершенно теряется. Что понятно? Что лексикографически? Какая рекурсия? Зачем тут вообще сортировка?

Не по теме:

- Петька, приборы!
- Семьдесят восемь!
- Что семьдесят восемь?!
- А что приборы?!

Какой алгоритм применить для нахождения перестановок рекурсией?
P.S. Я знаю, что для нахождения перестановок применяется алгоритм перестановок. Одним из алгоритмов перестановок является нахождение перестановок в лексикографическом порядке этот алгоритм я уже использовал.Хочу составить программу по нахождению перестановок при помощи рекурсии, для этой цели нужно выбрать алгоритм. С точки зрения простоты реализации предполагал, что можно использовать какой-либо алгоритм сортировки. Попробовал пузырьковый,но есть повторения. Исходя из вышеизложенного, что вы посоветуете.
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
03.12.2013, 21:53 #6
Вам еще нужно, чтобы при всех перестановках последовательности (1; 2; 4; 3; 3) не выводило 2 раза 1 2 4 3 3 ?
0
tcennoc
1 / 1 / 0
Регистрация: 22.11.2013
Сообщений: 35
03.12.2013, 21:58  [ТС] #7
Цитата Сообщение от Dani Посмотреть сообщение
Вам еще нужно, чтобы при всех перестановках последовательности (1; 2; 4; 3; 3) не выводило 2 раза 1 2 3 4 3 3 ?
Нет не нужно.
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
03.12.2013, 22:00 #8
tcennoc, т.е. оно может выводить 2 раза такое? Что-то я совсем не в теме.
0
tcennoc
1 / 1 / 0
Регистрация: 22.11.2013
Сообщений: 35
03.12.2013, 22:03  [ТС] #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
#include<iostream>
using namespace std;
const int n=4;
const int m=0;
 
void r(int* ar,int m,int n);
void swap(int* a,int* b);
int _tmain(int argc, _TCHAR* argv[])
{
int* ar=new int[n];
for(int i=0;i<n;i++)
ar[i]=i+1;
r(ar,m,n);
system("pause");
 
    return 0;
}
void r(int* ar,int m,int n)
{
if(m==23)
return;
if(n==1)
n=4;
if(ar+n-1>ar+n-2)
{
swap(ar+n-1,ar+n-2);
for(int i=0;i<4;i++)
cout<<*(ar+i);
cout<<endl;
}
r(ar,m+1,n-1);
}
void swap(int* a,int* b)
{
int temp=*a;
*a=*b;
*b=temp;
}
Выводит повторы.
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
03.12.2013, 22:07 #10
Если тебе нужна сортировка, то, по глупому, например, ее можно юзать так: Возьми все перестановки, забей в вектор и отсортируй их обычным сортом (только их нужно сравнивать с первого элемента поэлементно). Затем, если в отсортированном векторе текущая и предыдущая перестановки не равны, то вывести текущую.
0
tcennoc
1 / 1 / 0
Регистрация: 22.11.2013
Сообщений: 35
03.12.2013, 22:16  [ТС] #11
Цитата Сообщение от Dani Посмотреть сообщение
Если тебе нужна сортировка, то, по глупому, например, ее можно юзать так: Возьми все перестановки, забей в вектор и отсортируй их обычным сортом (только их нужно сравнивать с первого элемента поэлементно). Затем, если в отсортированном векторе текущая и предыдущая перестановки не равны, то вывести текущую.
Сортировка не обязательна. Вы бы не могли подсказать алгоритм перестановки кроме лексикографического. Не программу, а сам алгоритм словесно.
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
03.12.2013, 22:21 #12
Если ты генерируешь перестановки лексикографически (ПРЕДВАРИТЕЛЬНО ОТСОРТИРОВАВ МАССИВ, ПО КОТОРОМУ ТЫ БУДЕШЬ СТРОИТЬ ПЕРЕСТАНОВКИ), то одинаковые перестановки (если такие будут), то они будут сгенерированы друг за другом. Поэтому, текущую перестановку достаточно проверять с предыдущей на равенство). При равенстве - текущая перестановка будет повтором предыдущей.
0
tcennoc
1 / 1 / 0
Регистрация: 22.11.2013
Сообщений: 35
03.12.2013, 22:30  [ТС] #13
Цитата Сообщение от Dani Посмотреть сообщение
Если ты генерируешь перестановки лексикографически (ПРЕДВАРИТЕЛЬНО ОТСОРТИРОВАВ МАССИВ, ПО КОТОРОМУ ТЫ БУДЕШЬ СТРОИТЬ ПЕРЕСТАНОВКИ), то одинаковые перестановки (если такие будут), то они будут сгенерированы друг за другом. Поэтому, текущую перестановку достаточно проверять с предыдущей на равенство). При равенстве - текущая перестановка будет повтором предыдущей.
Лексикографически я уже сортировал все там работает, я хотел узнать есть ли еще какой нибудь простой алгоритм для перестановки, который можно было бы выразить рекурсивно. Вроде есть еще какой то рекурсивный алгоритм перестановок, но что он из себя представляет?
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
03.12.2013, 22:31 #14
Можно в рекурсии перебирать элемент, который нужно ставить на текущую позицию.
0
tcennoc
1 / 1 / 0
Регистрация: 22.11.2013
Сообщений: 35
03.12.2013, 22:40  [ТС] #15
Цитата Сообщение от Dani Посмотреть сообщение
Можно в рекурсии перебирать элемент, который нужно ставить на текущую позицию.
А, как это сделать 1234,1243,1423,4123,4132,4312,3412,3421,3241.... Так они будут повторяться вот как это откорректировать?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2013, 22:40
Привет! Вот еще темы с ответами:

Опять интегралы.... - C++
Написать программу для вычисления значения определенного интеграла вида с заданной точностью R=0.0001. Для вычислений используется...

опять о шрифтах - C++
приветствую. Имеется программа из учебника: #include &lt;iostream&gt; #include &lt;clocale&gt;; using namespace std; int main() { ...

Опять ошибка - C++
Идет ошибка сегментации, а я в программировании не так силен, понять не могу в чем проблема... (+ Выдает ошибки, когда количество...

Опять танки :D - C++
Сами танки я нарисовал, нашел алгоритм который просчитывает столкновение снаряда и танка ,преграды нарисовал ) танк уже двигается Не...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.12.2013, 22:40
Ответ Создать тему
Опции темы

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