我需要使用pthreads添加一个未知数量的数据结构并且最先排序它们,任何人都可以为此推荐一个好的结构(链表/数组列表)吗?C中的动态数据结构用于排序time_t对象?
1
A
回答
1
链表将O(n)
在这里找到新的目标是去的地方,但在将其插入不变。
动态数组/列表将会是O(log(n))
找到正确的地方,但最坏的情况O(n)
插入,因为您需要将所有值移过插入点。
如果你不需要随机访问,或者至少不是直到最后,你可以使用一个堆,O(log(n))
插入,大功告成后,你可以将它们拉出来在每个O(log(n))
,所以O(n*log(n))
为所有这些。
而且它可能有一个(可能是基于树的)结构,它可以做到这一切在O(log(n))
(红黑树?)。
那么,到底它归结为如何,确切的说,你想用它。
编辑:抬头red-black trees它看起来像是O(log(n))
搜索(根据维基百科,“已摊销O(1)
”),插入和删除,这可能是你想要的。
1
如果你只需要在年底订购,使用链表存储并行线程保持增加的记录count
。然后创建一个大小为count
的数组,将这些元素复制到新创建的数组中并从列表中删除它们。 最后使用qsort对数组进行排序。
如果你需要的并行线程使用heap
保持一个有序列表中的前一种方法将有如下的复杂性
O(n) for Insert
O(nlog(n)) for Sorting
后一种方法将有
O(nlog(n)) for Insert and Fetching
你也可以见priority queue
请注意,如果你在使用STL开放的,你可以去STL priority_queue
在内存以后会消耗更多的内存方面,因为你必须存储每个节点两个指针。
相关问题
- 1. 使用C qsort()对结构中的动态数组排序()
- 2. 基于密钥自动排序对象的数据结构?
- 3. 对包含基于DOM结构的对象的动态数组排序
- 4. C++结构TM&time_t的
- 5. 根据结构的元素对结构对象的向量排序 - C++
- 6. C#中的动态数据结构
- 7. 使用C++中的对象函数的结果对对象数组排序
- 8. 模拟中“动态”对象的结构
- 9. 排序的数据结构
- 10. 用于访问数据对象的Spring Boot程序结构
- 11. 什么数据结构用于对象的评估顺序?
- 12. C++排序数组结构
- 13. 在C++中对结构向量排序
- 14. 在C++中对结构进行排序
- 15. 对结构数组排序
- 16. 排序C中的结构数组
- 17. C#使用结构中的整数对列表进行排序
- 18. 使用Qt/C++排序算法 - 排序结构的QList结构
- 19. “排序”树数据结构
- 20. 用于存储动态数据的数据结构
- 21. Java数据结构允许布尔标志对象和排序?
- 22. 分析动态的Json数据结构到对象C#/ dotnet的核心
- 23. C中的排序结构用指针
- 24. jQuery对象数据结构
- 25. Java对象 - 数据结构
- 26. 数据结构对象
- 27. 在C++中对对象数组排序
- 28. 在C#中动态或不动态地对2个对象[,]进行排序
- 29. c#静态类/结构对象列表
- 30. 在集合数据结构中按类类型或类名对对象排序
您在寻找关于什么类型的数据结构或寻找包含库的建议的建议吗? – dbeer