Content deleted Content added
Library sort cannot be used as an online algorithm without modification. Removed that claim and explained it. |
m →Pseudocode: : remove trailing ")" |
||
(10 intermediate revisions by 7 users not shown) | |||
Line 1:
{{Short description|Sorting algorithm}}
{{refimprove|date=October 2017}}
{{Infobox Algorithm
Line 10 ⟶ 11:
|optimal=?
}}
'''Library sort'''
<blockquote>Suppose a librarian were to store
The algorithm was proposed by [[Michael A. Bender]], [[Martín Farach-Colton]], and [[Miguel Mosteiro]] in 2004<ref>{{cite
Like the insertion sort it is based on, library sort is a [[comparison sort]]; however, it was shown to have a high probability of running in O(n log n) time (comparable to [[quicksort]]), rather than an insertion sort's O(n<sup>2</sup>). There is no full implementation given in the paper, nor the exact algorithms of important parts, such as insertion and rebalancing. Further information would be needed to discuss how the efficiency of library sort compares to that of other sorting methods in reality.
Compared to basic insertion sort, the drawback of library sort is that it requires extra space for the gaps. The amount and distribution of that space would
Another drawback is that it cannot be run as an [[online algorithm]], because it is not possible to randomly
One weakness of [[insertion sort]] is that it may require a high number of swap operations and be costly if memory write is expensive. Library sort may improve that somewhat in the insertion step, as fewer elements need to move to make room, but
==Implementation==
Line 38 ⟶ 39:
'''procedure''' rebalance(A, begin, end) '''is'''
r ← end
w ← end
'''while''' r ≥ begin '''do'''
A[w+1] ← gap▼
A[w] ← A[r]
r ← r − 1
w ← w − 2
Line 50 ⟶ 51:
S ← new array of n gaps
'''for''' i ← 1 to floor(log2(n
'''for'''
ins ← binarysearch(A[j], S, 2^i)
insert A[j] at S[ins]
Line 65 ⟶ 67:
{{sorting}}
[[Category:Comparison sorts]]
[[Category:Stable sorts]]
|