数据结构与算法:跳表的原理与JAVA实现
一、什么是跳表?
链表,是我们常见的一种数据结构,但是链表的查询时间复杂度是O(n),为了提高链表的查询效率,就有了跳表的出现,跳表在基础的链表上面建立一层索引作用的链表,跳表查找数据的思路,有点类似于二分法查找,跳表的数据查询时间复杂度是O(logn)。下面用一张图来描述一下跳表。
一、JAVA代码实现?
package code.source;
class Skiplist {
// 测试入口
public static void main(String agrs[]) {
Skiplist skiplist = new Skiplist();
skiplist.add(1);
skiplist.add(5);
skiplist.add(6);
skiplist.add(3);
skiplist.add(7);
skiplist.printList();
System.out.println(skiplist.search(1));
skiplist.erase(1);
skiplist.printList();
}
// 给一个默认的跳表高度,16
public final static int DEFAULT_MAX_LEVEL = 16;
// 给一个默认的随机高度的概率因子
public final static double P_FACTORY = 0.25;
// 记录当前跳表的高度
public static int curr_max