相关疑难解决方法(0)

我什么时候想要使用堆?

除了优先级队列的明显答案之外,什么时候堆在我的编程冒险中会有用?

heap data-structures

82
推荐指数
3
解决办法
4万
查看次数

Quicksort vs heapsort

quicksort和heapsort都进行就地排序.哪个更好?什么是首选的应用程序和案例?

sorting algorithm quicksort heapsort

79
推荐指数
4
解决办法
7万
查看次数

高效的数据结构,保持对象在多个键上排序

我有一个python程序,我使用优先级队列来跟踪要处理的对象.目前,队列是使用SortedList实现的,而SortedList工作得非常好.

但是,我需要扩展此代码,以便列表在多个键上保持排序.有点像在多列上有索引的SQL数据库,因此我可以有效地访问,添加和删除所有键上的对象.我的工作量是加/减重.为了了解我想要做什么,这里有一些伪代码:

ml = MultiSortedList()
ml.append((1, "z", 1.5), a)
ml.append((2, "a", 40.0), b)
ml.append((3, "f", 0.5), c)

print(ml.sorted(0))
   [((1, "z", 1.5), a),
   ((2, "a", 40.0), b),
   ((3, "f", 0.5), c),]

print(ml.sorted(2))
   [((3, "f", 0.5), c),
   ((1, "z", 1.5), a),
   ((2, "a", 40.0), b)]

print(ml.sorted(2).pop(1)
   (1, "z", 1.5), a)

print(ml.sorted(0))
   [((2, "a", 40.0), b),
   ((3, "f", 0.5), c)]
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何有效地做到这一点.当然,我可以再次为每个访问不同列的列表排序,但这太贵了.此外,O(n)python列表上的删除操作变得很痛苦,因为列表可能包含数千个对象.

是否有现有的数据结构(最好已经在python中实现)来解决这个问题?如果没有,你能帮我概述一下如何有效地实现这个目标吗?

python sorting heap data-structures

7
推荐指数
1
解决办法
2225
查看次数

Python heapq - Python和C实现?使用哪一个?

我浏览Python源,发现一个C实现heapq,以及一个Python实现.为什么两者兼而有之?我import heapq来自CPython 时使用哪一个?

python

6
推荐指数
1
解决办法
470
查看次数