Member-only story
A better concurrency friendy data structure than B Tree.
In previous article — B Tree Step by Step . you can see it is a high performance data structure for searching .however:
- It is complex .
- when dealing with rebalance. the cost is high.
- what if under multi-processing (threading) environment ? it is even more compex .
In this article I only need your 5 mins time to walk through another Data structure which is simple (compare to B tree) yet powerful ,kind of a “multi-level link list” — Skiplist .
Let’s start.
A Skip Lists Sample
Attributes of skip list :
- Keys in sorted order.
- O(log n) levels
- Each higher level contains 1/2 the elements of the level below
Sample :
To build a perfect linked list. can start from bottom (which is a normal link list). then every upper layer link half of the elements . (as showing above)
Now lets see some operation .
Search
It’s simple. max visit log(N) levels then find the value : when value < current, go next level; otherwise check next node .
Insert
Step1: Locate the index to insert .
Step2: Build the link for each level. (Adjustment)
Depends on the position to insert, Need adjust(add/remove) max log(N) node links .
After insert (and rebuild links):