我有250万个条目/数字,我使用HeapSort通过插入排序堆来对它们进行排序。但它永远都是需要的......我知道heapsort的运行时间是O(nlogn),但在现实生活中,在基本的计算机上,我们在这里谈论的是多长时间?我有8 G.B.在我的Windows机器上的RAM,但我有双启动的Ubuntu,我认为它选择与1 G.B的RAM一起运行。
15,000个号码花了不到15秒。按比例说,大约需要40分钟?
答案 0 :(得分:4)
粗略估计,假设在从15k缩放到250万时没有额外的内存相关开销,运行时将是: (2.5m * log(2.5m))/(1.5k * log(1.5k))* 15秒= 64分钟
答案 1 :(得分:0)
我不知道堆排序,而当我查看原始的问问器(对15 000个数字进行15秒排序)时,我的眼睛突然冒出来,或者说是可接受的答案,但是默认的C ++ STL向量排序2.5M整数需要我<100ms。如果不是,请使用-O3进行编译:<700ms。