(57) A method for deinterleaving a sequence of interleaved data stored in a set of memory
locations from a first order to a second order in-place of a memory with linear time.
Two data items are withdrawn from the center of the sequence, creating a hole therein.
Destination positions for said withdrawn data items are determined. It is determined
whether the destination positions contain any data items. If so, the data items of
said destination positions are replaced with the withdrawn data items, and second
destination positions are determined for the data items withdrawn from the first destination
positions. Otherwise, the first data items are inserted at the destination positions
directly. If a data item is inserted at the hole of the sequence before the sequence
is properly deinterleaved, the nearest incorrectly positioned data item is determined
and repositioned. The repositioning sequence is repeated until all data items are
correctly positioned. Two sub-sequences can be reordered concurrently.
|

|