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

解决方案 »

  1.   

    一个比较简单的办法是使用SortedList对象,这个默认是自动排序的,用法和List一样
      

  2.   

    可以用 二分法 比如要插入数为n  先取 数组的中间索引的数比较  如果索引不是中间则取整  10个则取第5个数66(从0开始)if (n〉66) 再取索引 0-5 的中间值3 对应数字为41  
    依次类推 即可插入 (综合速度最快)
      

  3.   


            List<double> list = new List<double>();
            list.Add(1);
            list.Add(5);
            list.Add(3);        list.OrderBy(item => item);
      

  4.   


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

  5.   

    如果数据较多 的话
    用2分法比较不错~~
    不然的话。。
    list.Sort();
      

  6.   

    用LinkedList List只能插入到最后,插入到中间效率更低。当然,不考虑性能,就用9L的。
      

  7.   

    二分法,不过就这点数据的话直接Add后执行内置的排序即可。
      

  8.   

    另外,如果你要不断的“插入”数据到有序表,可以考虑使用二叉树构造极小堆,代替List<T>
      

  9.   


    嗯,你可以用SortedList代替List,SortedList就是一个极小堆的系统库的实现。不需要自己写了。