And here's another interesting algorithm/structure: Randomized Slide to Front
Denis Koroskin via Digitalmars-d
digitalmars-d at puremagic.com
Mon Nov 30 15:15:51 PST 2015
On Monday, 30 November 2015 at 22:11:09 UTC, deadalnix wrote:
> On Monday, 30 November 2015 at 21:50:09 UTC, Andrei
> Alexandrescu wrote:
>> On 11/30/15 4:41 PM, H. S. Teoh via Digitalmars-d wrote:
>>> What about when element i is matched, swap it with the
>>> (i/2)'th element?
>>
>> Randomization is essential - without it you have thrashing if
>> you search for 2 elements in alternation. -- Andrei
>
> You'd end up swaping the 2 element in front, but keep them both
> in front, so that sounds like it would have the same behavior
> as the randomized algorithm.
>
> Where it gets hairy, is when you access 2 elements in the array
> that would swap each other without getting in the front
> (because they are at 2n and 2n + 1 with n big).
Imagine that there are 1000 elements, 500th elements is X and
1000th element is Y.
1) search for Y: Y is last, takes 1000 iterations, swaps X<->Y
2) search for X: X is last, takes 1000 iterations, swaps X<->Y
3) back to 1
More information about the Digitalmars-d
mailing list