假设我有一组已排序的双打.
{ 0.124, 4.567, 12.3 }
Run Code Online (Sandbox Code Playgroud)
一个正的,非零的double是由代码的另一部分创建的,需要在保持排序的同时插入到该集合中.例如,如果创建的double是7.56,则最终结果是,
{ 0.124, 4.567, 7.56, 12.3 }
Run Code Online (Sandbox Code Playgroud)
在我的代码中,这个"创建双重并插入有序集合"过程然后重复了很多次.可能是500k到100万次.我不知道总共会创造多少双打,但我知道上限.
尝试
我天真的第一种方法是创建一个长度=上限的数组,并用零填充它,然后添加初始的双精度集("add"=用双精度替换0值的数据).每当创建一个double时,我将它添加到数组并执行插入排序,我读到这对排序有序数组很有用.
题
我有一种感觉,运行500k到100万插槽将是一个严重的性能问题.(或者我错了?)在C中是否有更高效的数据结构和/或算法?
编辑:
我想保持集合排序的原因是因为在每次"创建双重并插入有序集合"过程之后,我需要能够查找该集合中的最小元素(并且可能通过将其替换为0来删除它) ).我认为最好的方法是保持集合排序.
但如果情况不是这样,也许还有另一种选择吗?
| 归档时间: |
|
| 查看次数: |
548 次 |
| 最近记录: |