![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
Gl00M |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Вот у меня есть список:
Код Иванова Ирина Ж 12-52-17 Емельянов Иван М 13-15-26 .... Ну и так далее.. в списке много повторяющихся фамилий (именно фамилий!). Как упорядочить их по невозрастанию? Т.е. на 1м месте должны, по идеи, стоять все Ивановы (т.к. их больше всего), а на последнем, допустим, Ленин. Массив сам состоит из 20 строк и 4 колонок... ![]() спасибо! |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
То, что ты привел - не называется "по невозрастанию"... Оно называется "по убыванию частоты появления". Как у тебя массив описан?
Var Так? |
Gl00M |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Я описываю массив так:
const n=20; m=4; volvo, я спросил "Как упорядочить по невозрастанию?.е. на 1м месте должны, по идеи, стоять все Ивановы (т.к. их больше всего), а на последнем, допустим, Ленин.", т.к. в задании так сказано... ![]() Сообщение отредактировано: volvo - 3.11.2006 18:41 |
klem4 |
![]()
Сообщение
#4
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Значит, тогда так:
сначала сортируешь массив любым способом (из FAQ-а) по невозрастанию ПЕРВОГО элемента (фамилии), а потом (с уже отсортированным массивом) делаешь следующее: 1) ищешь максимальную последовательность одинаковых подряд идущих фамилий (запоминая ее начало, т.е. ты должен в любой момент знать, где в массиве начинается самая длинная последовательность одинаковых фамилий, и сколько именно одинаковых фамилий она содержит)... 2) когда макс. последовательность найдена, просто меняешь местами max (это ее длина) первых элементов массива с элементами, начинающимися с max_pos (это - индекс начала максимальной последовательности)... 3) затем начинаешь искать следующую макс. последовательность. Естественно, что первые max элементов в расчет уже приниматься не должны, они уже стоят на мечтах, поэтому начинаешь с max+1... Продолжать до тех пор, пока общее число перемещенных на втором этапе элементов не сравняется с длиной исходного массива... Код не привожу, ибо "Теория" ![]() klem4, не то... ![]() Надо вывести не просто по алфавиту, а по частоте фамилии... |
Gl00M |
![]()
Сообщение
#6
|
Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Спасибо, volvo и klem4, за подсказку!
![]() Код и не нужен был... я ж осознанно в теорию писал! ![]() ![]() |
мисс_граффити |
![]()
Сообщение
#7
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
2) когда макс. последовательность найдена, просто меняешь местами max (это ее длина) первых элементов массива с элементами, начинающимися с max_pos (это - индекс начала максимальной последовательности)... если менять местами, нарушится отсортированность. то есть у нас есть: Иванов Иван Иванов Петр Сидоров Иван Сидоров Денис Петров Дмитрий Петров Александр Петров Павел. Если поменять, получим: Петров Дмитрий Петров Александр Петров Павел Сидоров Денис Иванов Иван Иванов Петр Сидоров Иван тут что-то типа сортировки со вставкой: старое надо сдвигать, а на его место ставить новое. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Вообще-то я алгоритм списывал с рабочей версии программы, упорядоченность не нарушается... Может не совсем корректно выразился, извиняйте, я Паскалем владею лучше, чем русским языком
![]() |
мисс_граффити |
![]()
Сообщение
#9
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
возможно, я неправильно поняла...
просто как раз на лекции раз 8 повторили, чем обменные сортировки отличаются от сортировок со вставкой, вот и зациклилась ![]() -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
![]() |
Текстовая версия | 18.06.2025 6:18 |