首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

如小弟我有一个List<double>[1,2,3,41,55,66,77,81,92,100],小弟我现在有一个值 35 怎么最快的插入到排序的位

2012-12-30 
如我有一个Listdouble[1,2,3,41,55,66,77,81,92,100],我现在有一个值 35 如何最快的插入到排序的位置如

如我有一个List<double>[1,2,3,41,55,66,77,81,92,100],我现在有一个值 35 如何最快的插入到排序的位置
如我有一个List<double>
[1,2,3,41,55,66,77,81,92,100],从小到大排列好的
然后,我现在有一个值 35 如何最快的插入到排序的位置?

谢谢
[解决办法]
比较简单的就用二分法
[解决办法]
轮询一次找到比该值大的索引在哪插入 这个时间复杂度应该最低吧
[解决办法]
你可以先插入,再排序.
[解决办法]
先add进去,再sort
[解决办法]
可以用 二分法 比如要插入数为n  先取 数组的中间索引的数比较  如果索引不是中间则取整  10个则取第5个数66(从0开始)if (n〉66) 再取索引 0-5 的中间值3 对应数字为41  
依次类推 即可插入 (综合速度最快)
[解决办法]
对于几个数据而言,如果你用这个那个的算法,未必会快,所以算法是对于大量数据会有明显的效率提高
[解决办法]


            List<double> list = new List<double>{ 1, 2, 3, 41, 55, 66, 77, 81, 92, 100 };
            list.Add(35);
            list.Sort();

[解决办法]
用LinkedList List只能插入到最后,插入到中间效率更低。

当然,不考虑性能,就用9L的。
[解决办法]
二分法,不过就这点数据的话直接Add后执行内置的排序即可。
[解决办法]
另外,如果你要不断的“插入”数据到有序表,可以考虑使用二叉树构造极小堆,代替List<T>

热点排行