我不知道为什么那个告诉你的人会如此反对神秘,但实际上qsort并不是用C++对整数(或者通常是任何东西)进行排序的最有效方法.请std::sort改用.
这是可能的,你可以提高你的执行的std::sort对所陈述的特殊情况(范围0-65k 2000个不同的随机整数),但你不可能做的好多了,它几乎可以肯定不会是值得的.我能想到的事情可能会有所帮助:
使用快速排序,但使用不同的数据透视表选择或不同的阈值,可以根据您的实现sort使用情况切换到插入排序.这基本上是修补.
使用某种并行类型.2000元素是如此之小,我怀疑创建额外线程的时间将立即杀死任何性能改进的希望.但是如果你做了很多种类,那么你可以平均在所有这些中创建线程的成本,并且只担心线程同步的开销而不是线程创建.
也就是说,如果你对数组进行生成和排序,然后在其中只查找一个值,然后生成一个新数组,那么每次排序整个数组都会浪费精力.您可以在数组中运行,计算小于目标值的值的数量:此计数是它将具有的索引.使用std::count_if或短循环.
这些操作中的每一个都必须尽可能快.
这不是合法的软件工程标准.经过足够数月或数年的工程努力,几乎任何事情都可以变得更快 - 没有任何复杂的事情可以"尽可能快",即使它是你也无法证明它不会更快,并且即使你可以在某处或很快发明新的硬件,其中最快的解决方案是不同的和更好的.除非你打算一生都在完成这项任务并最终失败,否则要获得更现实的目标;-)