Processing math: 100%
Close
Close Window

Show Source |    | About   «  14.9. Graph Concepts Summary   ::   Contents   ::   15.2. Spatial Data Structures  »

17.1. SkipLists

17.1.1. SkipList Idea

1 / 18 Settings
<<<>>>

Here we illustrate the skip list concept. A skip list can be viewed as a sorted linked list with some extra pointers. We start with a simple linked list whose nodes are ordered by key value. To search this list requires that we move down the list one node at a time, visiting O(n) nodes in the average case.

Created with Raphaël 2.1.2
  1. Hd
Head
  1. 0
  1. 5
  1. 25
  1. 30
  1. 31
  1. 42
  1. 58
  1. 62
  1. 69
  1. null
Proficient Saving... Error Saving
Server Error
Resubmit

17.1.2. SkipList Reality

1 / 36 Settings
<<<>>>

Now we illustrate skip list insertion. The skip list is initialized with a header node of level 0, whose forward pointer is set to null. The top item shows the value associated with the skip list node. The head node is special so, has the value "Hd".

Created with Raphaël 2.1.2
  1. Hd
Head
  1. null
Proficient Saving... Error Saving
Server Error
Resubmit

17.1.3. Analysis

  • Best-case behavior is “balanced”: Θ(logn) (like a BST).

  • Worst-case behavior: All nodes at the same level (regardless of what level): Effectively degenerates to a linked list (like a BST).

  • Reality: Its behavior is not so dependent on order of inserts as a BST. Its similar to what BST cost would be if we randomized the input order. A huge improvement in expected performance!

17.1.4. Programming Principles

  1. All container classes should be general.

  2. Any container class’s initial state should be identical to its empty state.

   «  14.9. Graph Concepts Summary   ::   Contents   ::   15.2. Spatial Data Structures  »

nsf
Close Window