我需要一种列表类型的数据结构来在项目中实现。实际上,它不一定是某种列表,但它必须快速,并且我将使用它来不断地插入/删除/检索数据(其他数据结构)从中。我可能会插入一些东西,搜索,再次插入,删除,再次搜索等等,因此操作有点随机。
到目前为止,我发现跳表是最快的,还有比它更快的吗?
我需要一种列表类型的数据结构来在项目中实现。实际上,它不一定是某种列表,但它必须快速,并且我将使用它来不断地插入/删除/检索数据(其他数据结构)从中。我可能会插入一些东西,搜索,再次插入,删除,再次搜索等等,因此操作有点随机。
到目前为止,我发现跳表是最快的,还有比它更快的吗?
很多事情都取决于你选择的编程语言。C语言可以给你最大的控制权,让你最终得到最快的实现方式。当然,你也很容易自己给自己惹麻烦。Python抽象了很多列表数据结构,我发现它一直很快,但我也没有过分强调。
我建议你检查一下freshmeat上的预构建C库,看看能否重用它们来完成你的任务。也许维基百科关于跳表的页面会指引你找到更多信息:http://en.wikipedia.org/wiki/Skip_list
数据结构是一个深入的主题,需要对大O符号有足够的理解,以及当我们谈论“速度”和“效率”时它确切的含义,否则你将无法进行客观比较。最后,每种方法都有其优缺点。选择一个最能模拟你的数据和你打算如何操作它的数据结构。如果你的任务比较随机,请回到设计阶段,问问自己在数据结构之前如何改进发生的事情。也就是说,先确定好你的算法,然后再选择一个数据结构来补充它。