err*_*rah 9 c++ sorting algorithm insertion-sort
这个名字说的都是真的.我怀疑插入排序是最好的,因为它是一般的大多数排序数据的最佳排序.但是,由于我对数据有了更多了解,因此有可能还有其他种类可供选择.所以其他相关的信息是:
1)这是时间数据,这意味着我可以推测可以为数据排序创建有效的哈希值.2)数据不会同时存在.相反,我将阅读可能包含单个向量,或十几个或数百个向量的记录.我想在5秒钟内输出所有时间.因此,在插入数据时进行排序的排序可能是更好的选择.3)内存不是一个大问题,但CPU速度是因为这可能是系统的瓶颈.
鉴于这些条件,任何人都可以提出一个除了插入排序之外可能值得考虑的算法吗?另外,如何定义"主要排序"以确定什么是良好的排序选项?我的意思是我如何查看我的数据并决定'这不像我想象的那样排序,也许插入排序不再是最好的选择'?任何与文章相关的链接都可以理解,该文章考虑了流程复杂性,这些文章更好地定义了相对于学位数据的复杂性.
谢谢
编辑:谢谢大家的信息.我现在将进行简单的插入或合并排序(无论我已经预先编写).但是,一旦接近优化阶段,我将尝试其他一些方法(因为他们需要付出更多努力才能实现).我很感激帮助
您可以采用您建议的选项(2) - 在插入元素时对数据进行排序。
使用按时间升序排序的跳跃列表来维护数据。
O(1)对于这些情况将平均。O(logn).这种方法将产生O(n+klogn)算法,其中k是无序插入的元素数量。