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


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Andrew Kadatch                       2:5020/400     05 Jun 2001  12:22:54
 To : All
 Subject : Re: сортировка динамического списка
 -------------------------------------------------------------------------------- 
 
 >  IZ> Hарод, поделитесь сабжем. Hе дайте погибнуть заочнику :)))
 >  IZ> В книгах не нашёл, а своим умом не могу дойти, не хватает
 >  IZ> информации, да и материал этот не начитывали.
 >  IZ> Сабж нужен на паскале.
 >  а cколко я помню cпcки только вcтавкой cоpтиpовать можно.
 
 Hу-ну... А если построить сбалансированное дерево поиска (AVL, 2-3,
 red-black, и т.д)
 и затем обойти?
 
 А как же классическая сортировка слиянием -- одна из лучших?
 
 Рассмотрим неотсортированный список длины N как последовательность
 из N подсписков длины 1. Подсписок, содержащий ровно один элемент,
 отсортирован по определению.
 
 Допустим, что на некотором шаге имеется последовательность из K
 отсортированных
 подсписков длины M (кроме последнего, который может быть короче).
 Возьмем два первых отсортированных подсписка и сольем их в один список длины
 2M
 сравнением первых элементов подсписков и удалением наибольшего, который
 необходимо
 добавить в конец порождаемого списка.
 
 Применив слияние K/2 раз, получим последовательность из K/2 отсортированных
 подсписков длины 2М.
 
 Итак, на каждом шаге количество подсписков уменьшается вдвое, а их длина
 удваивается,
 поэтому за log_2 N итераций N отсортированных подсписков длины один
 превращаются,
 превращаются, ... -- нет, не в элегантные шорты, а в последовательность,
 содержащую ровно
 один отсортированный подсписок длины N, который и нужно было построить.
 Поскольку
 сложность каждого шага равна O(N), то сложность сортировки слиянием равна
 O(N log N),
 т.е. она асимптотически оптимальна.
 
 Построение эффективной реализации, которая не требует дополнительной памяти
 и обходится
 односвязными списками, а также пытается найти начало второго подсписка
 пропуском M элементов,
 предоставляется в качестве упражнения.
 Удачи,
 АК
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 сортировка динамического списка   Igor Zuenko   21 May 2001 21:28:56 
 сортировка динамического списка   Uriy Iovkov   26 May 2001 23:07:58 
 Re: сортировка динамического списка   Andrew Kadatch   05 Jun 2001 12:22:54 
 сортировка динамического списка   Sergey Popov   12 Jun 2001 03:48:36 
Архивное /ru.algorithms/6577c68d05e7.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional