I have written an algorithm, which can order and sort large numbers of items.
It creates a pyramidal directory, moving entries and groups accordingly.
Items can be added, removed and looked-up in constant low time.
This is the standard-implementation, there are two more implementations in C and C#.
|
The entries are stored in groups. |
|
|
The size of the groups is limited and 10 by default. |
|
|
If the group is full a parent-group is created. |
|
|
The first and the last entry can be moved to the neighbour-group. |
|
|
The entries are moved between the groups, so all groups get as full as possible. |
|
|
The number of groups is limited too, another parent-group is created. |
|
|
If an entry needs to be inserted in a full group, a whole sub-tree can be moved. |
You can find detailed information in the
Wiki.