1. Заголовок или название темы должно быть информативным ! 2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК ! 4.НЕ используйте форум для личного общения! 5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Списки + упорядочевание :), теория + ма-а-аленький пример
Иванова Ирина Ж 12-52-17 Емельянов Иван М 13-15-26 ....
Ну и так далее.. в списке много повторяющихся фамилий (именно фамилий!). Как упорядочить их по невозрастанию? Т.е. на 1м месте должны, по идеи, стоять все Ивановы (т.к. их больше всего), а на последнем, допустим, Ленин. Массив сам состоит из 20 строк и 4 колонок... спасибо!
volvo, я спросил "Как упорядочить по невозрастанию?.е. на 1м месте должны, по идеи, стоять все Ивановы (т.к. их больше всего), а на последнем, допустим, Ленин.", т.к. в задании так сказано... ))
Значит, тогда так: сначала сортируешь массив любым способом (из FAQ-а) по невозрастанию ПЕРВОГО элемента (фамилии), а потом (с уже отсортированным массивом) делаешь следующее:
1) ищешь максимальную последовательность одинаковых подряд идущих фамилий (запоминая ее начало, т.е. ты должен в любой момент знать, где в массиве начинается самая длинная последовательность одинаковых фамилий, и сколько именно одинаковых фамилий она содержит)... 2) когда макс. последовательность найдена, просто меняешь местами max (это ее длина) первых элементов массива с элементами, начинающимися с max_pos (это - индекс начала максимальной последовательности)... 3) затем начинаешь искать следующую макс. последовательность. Естественно, что первые max элементов в расчет уже приниматься не должны, они уже стоят на мечтах, поэтому начинаешь с max+1...
Продолжать до тех пор, пока общее число перемещенных на втором этапе элементов не сравняется с длиной исходного массива...
Код не привожу, ибо "Теория"
klem4, не то...
Надо вывести не просто по алфавиту, а по частоте фамилии...
2) когда макс. последовательность найдена, просто меняешь местами max (это ее длина) первых элементов массива с элементами, начинающимися с max_pos (это - индекс начала максимальной последовательности)...
если менять местами, нарушится отсортированность. то есть у нас есть:
Иванов Иван Иванов Петр Сидоров Иван Сидоров Денис Петров Дмитрий Петров Александр Петров Павел.
Если поменять, получим:
Петров Дмитрий Петров Александр Петров Павел Сидоров Денис Иванов Иван Иванов Петр Сидоров Иван
тут что-то типа сортировки со вставкой: старое надо сдвигать, а на его место ставить новое.
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
Вообще-то я алгоритм списывал с рабочей версии программы, упорядоченность не нарушается... Может не совсем корректно выразился, извиняйте, я Паскалем владею лучше, чем русским языком
возможно, я неправильно поняла... просто как раз на лекции раз 8 повторили, чем обменные сортировки отличаются от сортировок со вставкой, вот и зациклилась
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!