Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет vadim_i_z ([info]vadim_i_z)
@ 2007-01-27 12:20:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Алгоритмы сортировки
Для начала история из сегодняшней рассылки anekdot.ru.
Мой знакомый работает в компьютерном сервисе, одно время ходил по вызовам(уже вспоминается масса историй, но одна из них заслуживает упоминания)
Суть вызова состояла в следующем - как объяснила секретарша "нажимаем одну кнопку когда печатаем, а на экране вылазит другая буква", а дело под конец рабочей недели, а тот знакомый еще и студент-заочник, причем студенческого возраста - то есть уже на автомате, к тому же и с факультета информационных технологий. Приходит он по вызову, проверяет - действительно, нажимаешь одну кнопку - вылазиет не та буква. Но когда он повнимательнее посмотрел на клавиатуру.....
Бухгалтеру главному шибко не понравилось, что кнопки на клавиатуре расположены не по алфавиту, это создание всковырнуло их НОЖНИЦАМИ и расположило в соответствии с порядком русской азбуки.
Тот студент по его словам их "чуть не поубивал там всех"
Рассказал(a) вагт

А теперь вопрос. Как известно, сортировку можно делать по алфавиту и по числовому значению (например, по номерам). Но как сделать сортировку одновременно и по номерам, и по алфавиту? Речь, разумеется, не о примитивном 1a, 1b, 1c - нет, требуется одноуровневый список.
Вопрос не вполне серьезный, конечно... но такая сортировка в Сети мне попадалась.
Комменты до поры скринятся.
Upd Вопрос хотя по форме и программистский, но на самом деле к программированию отношения почти не имеет. Подсказка: количество сортируемых объектов - 154.


(Добавить комментарий)


[info]livius@lj
2007-01-27 07:28 (ссылка)
Может быть, точнее поставить задачу?
Не совсем понятно, что значит "одновременно по номерам и алфавиту"...
Большинство алгоритмов сортировки работают инвариантно относительно функции, реализующей отношение сравнения. Т.е. если функция будет сравнивать элементы, например, "по номерам, а если номера одинаковые, то по алфавиту", то сортировка пройдет нормально.
Или я чего-то не понял?

(Ответить) (Ветвь дискуссии)


[info]vadim_i_z@lj
2007-01-27 07:42 (ссылка)
Ладно, спрошу так: можно ли отсортировать по номерам так, чтобы получилась сортировка по алфавиту?
Все объекты имеют разные номера.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Удивительный какой-то вопрос
[info]nomad_frog@lj
2007-01-27 08:22 (ссылка)
Звучит для меня как "Можно ли получить значение функции по значению аргумента ?"
В PL/SQL это достигается простой сортировкой по CHR(<код ASCII символа>).
Да и не встречался мне алгоритмический язык, который был бы лишён подобной встроенной функции.

(пожимая плечами)
"Не понимаю !" (с) Задорнов

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Удивительный какой-то вопрос
[info]vadim_i_z@lj
2007-01-27 09:02 (ссылка)
Сортировка по CHR - а где же там сортировка по алфавиту?

(Ответить) (Уровень выше) (Ветвь дискуссии)

Поясняю
[info]nomad_frog@lj
2007-01-27 09:22 (ссылка)
CHR(х) возвращает символ со значением ASCII-кода х. То есть, имея коды значений, при сортировке по CHR(x) (вместо сортировки по х) получаем упорядочивание по алфавиту.

(Ответить) (Уровень выше)

Re: Удивительный какой-то вопрос
[info]pascendi@lj
2007-01-27 13:52 (ссылка)
Все равно непонятна постановка задачи.
Каждая буква алфавита имеет код (CHR тот самый). В кодировках cp866 и cp 1251 коды букв и латинского, и русского алфавита устроены таким образом, что сортировка в возрастающем порядке по CHR соответствует сортировке в возрастающем порядке по алфавиту, при этом вначале следуют заглавные буквы, потом строчные.

Что Вы имели в виду?

(Ответить) (Уровень выше)


[info]temp1@lj
2007-01-27 09:24 (ссылка)
буква алфавита - char - числовое значение
они последовательны

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vadim_i_z@lj
2007-01-27 15:38 (ссылка)
Не обязательно. А если алфавит белорусский? Или Ё?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]temp1@lj
2007-01-28 04:17 (ссылка)
всё равно под каждый алфавит надо будет адаптировать алгоритм, для тех же умляутов в немецком
для учёта вот таких особых точек

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]vadim_i_z@lj
2007-01-28 05:25 (ссылка)
Конечно.

(Ответить) (Уровень выше)


[info]a_konst@lj
2007-01-27 09:44 (ссылка)
что-то я тоже ничего не понял.
какое соответствие между словесной составляющей, которая по алфавиту должна быть, и номерами?

(Ответить)


[info]y2y@lj
2007-01-27 11:25 (ссылка)
первый
второй
третий

сто пятьдесят четвертый.

(Ответить) (Ветвь дискуссии)


[info]vadim_i_z@lj
2007-01-27 15:39 (ссылка)
И где же тут алфавит? Вот если бы "второй первый третий..."

(Ответить) (Уровень выше)


[info]wolfriend@lj
2007-01-27 11:42 (ссылка)
Можно сделать так, чтобы сами названия чисел шли по алфавиту. Тогда список начнется так:
Восемнадцать, восемь, восемьдесят восемь, восемьдесят два... И так далее

(Ответить) (Ветвь дискуссии)


[info]vadim_i_z@lj
2007-01-27 15:41 (ссылка)
Почти правильно. Сейчас дам ответ отдельным сообщением.

(Ответить) (Уровень выше)


[info]konstkaras@lj
2007-01-27 14:25 (ссылка)
Что-то я действительно не понимаю - каким должно быть бинарное отношение между объектами? Если есть объект Б №1 и А №2 - какой должен быть после сортировки раньше?

(Ответить)

Пока не буду подглядывать в ответ
[info]just_tom@lj
2009-03-09 17:54 (ссылка)
По алфавиту, как если бы номера были написаны прописью? Я где-то такое видел (в списке улиц, где попадались улицы, начинающиеся с числа, типа улица 26 Бакинских Комиссаров, только не по-русски это было).

(Ответить)