相关疑难解决方法(0)

为什么不总是使用堆排序

堆排序排序算法似乎有O(nlogn)的最差情况的复杂性,并且使用O(1)排序操作空间.

这似乎比大多数排序算法更好.那么,为什么不总是使用Heap Sort作为排序算法(为什么人们使用排序机制,如Merge sort或Quick sort)?

此外,我看到人们使用Heap排序中的"不稳定"一词.这意味着什么?

sorting algorithm heapsort

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

Quackort优于Heap Sort

堆排序具有最差的情况复杂性,O(nlogn)而Quicksort O(n^2).但是,经验证据表明,快速排序是优越的.这是为什么?

sorting algorithm big-o quicksort heapsort

37
推荐指数
3
解决办法
2万
查看次数

堆排序与合并排序的速度

迭代大型数组时,哪种算法更快:堆排序还是归并排序?为什么这些算法中的一种比另一种更快?

java sorting mergesort heapsort

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

高效的列表排序:使用堆代替标准排序速度较慢

我正在尝试创建一种更有效的方法来对 python 中的列表和字典进行排序,并遇到了Efficient data Structurekeepingingobjectsonmultiplekeys。建议的解决方案是使用heapq模块。

然而,在我的测试中,堆似乎比原生 Python 排序算法慢两倍。下面是我用来做简单测试的代码。结果例如:

堆: 0.005993366241455078

标准: 0.0020036697387695312

有没有办法真正使用堆并提高性能,正如上面链接的帖子声称的那样?该代码会是什么样子?

这是测试它的代码:

import  random
import time
from heapq import *

standardlist = []
heaplist = []
for i in range(10000):
    num = random.randint(0,10000)
    standardlist.append(num)
    heappush(heaplist, num)

# Standard sorting method:
start_time = time.time()
sorted_list = sorted(standardlist)
finish_time_1 = time.time() - start_time

# Heap sorting method:
start_time = time.time()
heap_sorted_list = [heappop(heaplist) for i in range(len(heaplist))]
finish_time_2 = time.time() - start_time

print("Standard Finish Time:", finish_time_1) …
Run Code Online (Sandbox Code Playgroud)

python sorting heap performance list

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

堆排序还是快速排序更好?

我给了一个公司的书面报告.我对一个问题有疑问任何人都可以帮助我吗?

以下是最快的排序算法?
a - 冒泡排序
b - shell排序
c - 堆排序
d - 快速排序

我很困惑b/w快速排序和堆排序都有时间复杂度O(nlogn).

sorting algorithm

-1
推荐指数
1
解决办法
6937
查看次数

标签 统计

sorting ×5

algorithm ×3

heapsort ×3

big-o ×1

heap ×1

java ×1

list ×1

mergesort ×1

performance ×1

python ×1

quicksort ×1