IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Разработка и алгоритм многомерной сортировки., язык : C++. Компилятор/IDE Eclipse+minGW+gcc.
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 222
Пол: Мужской
Реальное имя: Andrew

Репутация: -  0  +


Вот моя идея :
Есть какой-то массив объектов одного класса.
Прим. класса :
class employee {
public:
int age; // Возраст
std::string employeeLname;//Фамилия
long int salary; // зарплата
//далее описание его методов и т.д.
//...
};

Массив фактически является таблицей штата сотрудников.Предположим,что нам надо отсортировать сначало по фамилии,далее по возрасту,потом,сохраняя порядок по фамилии и возрасту, по зарплате.НО,допустим,пользователь хочет отсортировать таблицу по Фамилии , зарплате и стажу(именно в таком порядке),или же, по зарплате и возрасту,но не по фамилии. Т.е Возможных вариантов будет
"полная сортировка"
1 1 1
сортировка по 2м параметрам
1 1 0
0 1 1
1 0 1
сортировка по 1му параметру
1 0 0
0 0 1
0 1 0
всего у нас (2^n )-1) возможных сортировок.
(где 1 и 0 - битовые флаги,означающие сортировку по какому-то выбранному параметру).

Вопрос в следующем,есть ли у кого-то примеры таких алгоритмов или же,какие-нибудь идеи по алгоритму?Я пока читаю вот это - http://sources.ru/magazine/0906/03.html . но не особо понимаю.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Я не понял, чем тебя не устраивает, скажем, стандартный std::sort с твоим предикатом сравнения? Просто пишешь функцию, как сравнивать 2 элемента таблицы между собой, и передаешь эту функцию в sort() третьим параметром. Все, больше ничего не надо...

Скажем, чтобы отсортировать
Цитата
по зарплате и возрасту,но не по фамилии
, достаточно:
bool PartialOne(const employee& first, const employee& second) {
if(first.salary == second.salary) {
return (first.age < second.age);
}
else return (first.salary < second.salary);
}
...
sort(vec.begin(), vec.end(), PartialOne);
...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.04.2024 14:51
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name