日期:2014-05-17  浏览次数:20462 次

求排序算法
求一组数组中最大的5个元素,并按数组中数的出现顺序排列.
C# code
int[]{5,9,3,2,0,8,7,1,9};


现在的问题是已经找到最大的5个数,但不知道如何让其按数组中出现的顺序排列.

返回结果:5,9,8,7,9


------解决方案--------------------
已经找到了5个数,遍历原来的数组判断是否包含在5个数里,把没有的清除掉就好了。
------解决方案--------------------
C# code
            int[] arr = { 5, 9, 3, 2, 0, 8, 7, 1, 9 };
            List<int> list = arr.OrderByDescending(x => x).Take(5).ToList<int>();
            arr.ToList().ForEach(x => { if (list.Contains(x))Console.WriteLine(x); });

------解决方案--------------------
C# code

  int[] int_array=new int[]{5,9,3,2,0,8,7,1,9};
                int_array=int_array.Select((a, i) => new { index = i, value = a }).OrderByDescending(a => a.value).Take(5).OrderBy(a => a.index).Select(a=>a.value).ToArray();

                /*
                        [0]    5    int
                        [1]    9    int
                        [2]    8    int
                        [3]    7    int
                        [4]    9    int

                 */