求排序算法
求一组数组中最大的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 */