![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 22.01.2010
Сообщений: 3
|
![]()
Добрый день.
Подскажите такую вещь: есть массив структур (предположим, элементамы структур surname, name, age), Нужно отсортировать элементы сначала по surname, затем по name, ну и затем по age. Как сделать это по одному полю я знаю. А вот как сделать так, чтобы при второй сортировке не нарушалась последовательность предыдущей? спасибо. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 03.11.2008
Сообщений: 94
|
![]()
Самое банальное отсортировать еще раз с дополнительным условием "если первые параметры равны" =)
|
![]() |
![]() |
![]() |
#3 | |
Новичок
Джуниор
Регистрация: 22.01.2010
Сообщений: 3
|
![]() Цитата:
где это условие должно указываться? в функции сравнения? и что нужно возвращать, если "первые параметры" неравны? если создать еще одну функцию сравнения и в ней возвращать результат сравнения параметров при условии, что первые параметры равны, то эти строки сортируются правильно. А вот первое условие на все остальные элементы уже не выполняется. |
|
![]() |
![]() |
![]() |
#4 |
Новичок
Джуниор
Регистрация: 22.01.2010
Сообщений: 3
|
![]()
Сам отвечу на свой вопрос : да, в функции сравнения и надо устраивать проверки
![]() |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 03.11.2008
Сообщений: 94
|
![]()
Когда-то давно сортировал(сейчас этот код стыдно показывать =) )
Код:
Сортировка выбором по индексам |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 07.01.2010
Сообщений: 141
|
![]()
Я бы посоветовал вам написать ф-ию, которая определяет, какое из значений стрктур меньше.
что-нибудь типа такого: bool IsFirstLess(const vesh& first, const vesh& second) { // Определяет, является ли значение первой структуры меньше значения второй. // тут код, который сперва проверяет первые поля структур, // и если они одинаковые, проверяет сдедующие и т.д. } тогда код сортировки выглядит также как и при сортировке простых целых чисел. Для целых чисел это выглядит примерно так: if (a < b) ... а для структур будет так: if (IsFirstLess(veshA, veshB)) ... Тут немного из с++ взято, но суть я думаю вам ясна. Такой вариант проще да и отсортируется все за один проход Последний раз редактировалось _Ч_; 23.01.2010 в 22:09. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Заполнение массива структур данными из файла | Brutallus | Общие вопросы C/C++ | 0 | 26.11.2009 19:01 |
[C++] Инициализация массива структур отдельно от объявления | MariyaL | Помощь студентам | 0 | 30.09.2009 12:27 |
Сортировка массива структур. | nec117 | Общие вопросы C/C++ | 5 | 22.02.2009 18:01 |
Сортировка массива структур | arturka | Помощь студентам | 1 | 21.06.2008 14:15 |