当前位置:编程学习 > C#/ASP.NET >>

求两个已按由小到大排序的数组中最大的前十个数

如题 希望能给出比较优化的算法。谢谢! --------------------编程问答-------------------- list<int>lst=new list<int>();
lst=lst.skip(10),take(10).tolist(); --------------------编程问答-------------------- 前10个就是答案 --------------------编程问答-------------------- 从后开始遍历 循环十次就行了 --------------------编程问答-------------------- 能不能不用类库里直接给的函数?? 
--------------------编程问答-------------------- 已经排序了,那后10个就是你要的了,你还想怎么样啊 --------------------编程问答--------------------
引用 3 楼 happyrain2010 的回复:
从后开始遍历 循环十次就行了


能否详细点?我没写出来。。。所以想学习下。。。:) --------------------编程问答--------------------
引用 6 楼 maggiecq 的回复:
引用 3 楼 happyrain2010 的回复:
从后开始遍历 循环十次就行了


能否详细点?我没写出来。。。所以想学习下。。。:)

还不详细 --------------------编程问答-------------------- list<int>lst=new list<int>();
lst.Sort
lst=lst.take(10).tolist();
(from a in lst orderby  a descending select a ).Take(10) --------------------编程问答-------------------- 把两个数组放到一个list<int>中,然后排序,取前10个... --------------------编程问答-------------------- 分别取前十个,归并 --------------------编程问答--------------------     class Program
    {
        static void Main(string[] args)
        {
            int[] intarr1 = { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 };
            int[] intarr2 = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18 };
            List<int> intlist = new List<int>();
            foreach (int n in intarr1)
            {
                intlist.Add(n);
            }
            foreach (int n in intarr2)
            {
                intlist.Add(n);
            }
            intlist.Sort();
            intlist.Reverse();
            intlist = intlist.Take(10).ToList();
            intlist.ForEach(it => { Console.Write(it); });

            Console.ReadKey();
        }
    } --------------------编程问答--------------------
引用楼主 maggiecq 的回复:
如题 希望能给出比较优化的算法。谢谢!

从数组A中取出最后的的10个 a1 - a10, a10最大,a1最小,放到新的数组R中
从数组B中取出最后的的10个 b1 - b10, b10最大,b1最小,



R[0] = a10;
R[1] = a9;
...
R[9] = a1;

for( temp from b10 to b1)

   if( temp <= a1)// temp后面的肯定都比a1小,所以不用再比了
      break;
   else
   {
      // 将temp放到R中,并保证R有序,可以使用折半等方法,这样原来a1的值就相当于被移走了
   }

--------------------编程问答-------------------- 如果a1 >= b10, 或者b1 >= a10就不用再比了,直接取较大的那个数组
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,