Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Oleg Khovayko                        2:5020/400     27 Dec 2002  07:07:41
 To : Andrew Ezhguroff
 Subject : Re: быстpая соpтиpовка
 -------------------------------------------------------------------------------- 
 
 Andrew Ezhguroff wrote:
 
 > Hо рекурсия все же нужна. И, следовательно, дополнительная память для
 > организации рекурсии нужна (так что в п.3 ты не прав).
 
 При программировании микроконтроллеров обычно подразумеваются
 раздельные секции кода, данных, стека, I/O page. И обычно они никак не 
 пересекаются, тем более, что секция кода вообще лежит в ПЗУ.
 Именно это я и подразумевал в п.3, когда писал "память данных".
 Там я подразумевал, что стек болтается в своем сегменте, и с данными
 не перемешивается.
 Извини, если невнятно обьяснился.
 
 > Пирамидальная сортировка обеспечивает O(N*log(N)) для любых данных (правда с
 > большим коэф. пропорциональности - она работает медленнее лучшего случая
 > быстрой сортировки) и не требует рекурсии и дополнительных массивов.
 
 Да я же не спорю. Побитовая сортировка тоже имеет свои недостатки.
 Hо в данном конкретном применении - а именно "16-и разрядные числа в 
 8-битовой машине" - она демонстрирует некоторые преимущества, связаные с 
 возможность "уполовинивать" сортируемые слова.
 
 Так, например, если на данном этапе идет сортировка по биту 8..15
 (старший байт), то для проверки битмаски не обязательно затаскивать в 
 процессор из памяти все слово целиком в два присеста (старший байт, а 
 потом младший байт). Достаточно втянуть только старший, байт, наложить 
 на него маску, а потом решать - переходить ли к след. элементу массива 
 (ежели маска не сработала), или же заниматься этим словом целиком.
 Таким образом, при побитовой сортировке на данном этапе сравниваются 
 только старшие байты, а переставляются (только когда надо) младшие со 
 старшими, то есть слова целиком. То есть обращение к младшим байтам 
 сортируемых слов идет только для их перестановки - в сравнении они не 
 учавствуют.
 
 Аналогичное упрощение можно получить на этапе сортировки по биту из
 младшего байта. Так как старший байт уже отсортирован, то в текущем 
 подмассиве все биты, старше чем маска, у всех элементов одинаковы.
 Это позволяет вообще не трогать старший байт, а свести и сравнения, и 
 перестановки 16-битовых слов к сравнениям/перестановкам младших байтов 
 этих слов.
 
 Если же учесть, что в таких примитивных микроконтроллерах аппаратного 
 сравнения 16-битных слов обычно не бывает (я не знаю, есть ли это в 
 конкретной железке "заказчика"), а оно делается путем вызова
 спец. функции, то замена сравнения слов сравнением байтов (которое 
 аппаратно везде есть) также даст хороший выигрыш в скорости.
 
 Я оцениваю суммарный выигрыш по скорости от всех трех описаных выше
 "байт-модификаций" где-то в 30..50%. И этот выигрыш можно получить
 только при поразрядной сортировке, когда сравнивается/переставляется
 не все слово целиком. Все остальные способы сортировки (кроме
 radix-sort), в том числе и heap-sort рассматривают сравниваемое
 слово как атомарный обьект, и с "кусочками ключей" не работают 
 принципиально. Поэтому фокусы типа вышеописаных там принципиально
 не могут быть примененны.
 
 Покроет ли выигрыш в скорости от уполовинивания ключей потери памяти
 от использования стека - заказчику решать. Он лучше меня знает,
 сколько у него еще есть доступной памяти.
 Я свое мнение высказал и обосновал. А дальше пусть заказчик думает,
 что ему лучше.
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 быстpая соpтиpовка   Alexx Ovodov   23 Dec 2002 23:20:59 
 быстpая соpтиpовка   Alexander Shashkevich   24 Dec 2002 11:19:50 
 быстpая соpтиpовка   Alexx Ovodov   25 Dec 2002 09:05:42 
 Re: быстpая соpтиpовка   Nick Kovaliov   25 Dec 2002 11:29:25 
 Re: быстpая соpтиpовка   Andrew Ezhguroff   24 Dec 2002 15:02:51 
 Re: быстpая соpтиpовка   Oleg   24 Dec 2002 15:10:58 
 Re: быстpая соpтиpовка   Andrew Ezhguroff   25 Dec 2002 04:03:51 
 Re: быстpая соpтиpовка   Sergey Andrianov   26 Dec 2002 23:58:08 
 быстpая соpтиpовка   Alexx Ovodov   25 Dec 2002 09:11:37 
 Re: быстpая соpтиpовка   Oleg Khovayko   26 Dec 2002 09:04:23 
 Re: быстpая соpтиpовка   Oleg Khovayko   26 Dec 2002 09:47:31 
 Re: быстpая соpтиpовка   Nick Kovaliov   26 Dec 2002 11:07:56 
 Re: быстpая соpтиpовка   Oleg I. Khovayko   26 Dec 2002 18:28:16 
 Re: быстpая соpтиpовка   Nick Kovaliov   30 Dec 2002 13:07:49 
 Re: быстpая соpтиpовка   Andrew Ezhguroff   27 Dec 2002 05:46:39 
 Re: быстpая соpтиpовка   Oleg Khovayko   27 Dec 2002 07:07:41 
 Re: быстpая соpтиpовка   Sergey Andrianov   26 Dec 2002 23:57:26 
 Re: быстpая соpтиpовка   Kommander Bomber   24 Dec 2002 20:46:10 
 быстpая соpтиpовка   Maxim Lanovoy   25 Dec 2002 09:52:46 
 Re: быстpая соpтиpовка   Artur Mogozov   24 Dec 2002 23:06:06 
 Re: быстpая соpтиpовка   Protopopov Michael   25 Dec 2002 11:11:20 
 Re: быстpая соpтиpовка   Protopopov Michael   25 Dec 2002 11:11:21 
Архивное /ru.algorithms/65776738e6a3.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional