作者ashram (アシュラム)
看板C_Sharp
标题Re: [问题] 与阵列的排序相对应的index该怎麽设计?
时间Mon Jan 25 01:21:00 2010
※ 引述《wildcupid (小渔歌)》之铭言:
: 今天在练习的时候遇到了一个瓶颈卡很久
: 假设今天我有两个阵列
: A = [12 35 8 99 6] //与B相对位置的值
: B = [0 1 2 3 4] //A里每个值的相对index
: 我稍微解释一下
: 12的index为0
: 35的index为1... 以此类推
: 如今因为我想找出A阵列中的最小值
: 所以我必须对A做sort
: Array.sort(A)
: 此时抓出A[0]就知道最小值是6了
: 但是同样的我也想要知道这个最小值原本的index(也就是4)
: 所以想请问一下大家有没有比较好的方法呢?
: 我是有想到一个很笨又很麻烦的
: 大致上的想法是先把A复制一次
: 然後去sort这个复制的A
: 抓出最小值後再回到原本的A去找这个最小值相对应的index
: 希望有人可以提供比较好的方法罗
: 感谢!!!
using System.Collections.Generic;
using System.Linq;
int[] A = { 12, 35, 8, 99, 6 };
//最小值
int min = A.Min();
//最小值的index
int minindex = Array.IndexOf(A, A.Min());
: james732大大可以跟我说一下不用排序的方法吗?
: 另外其实我是想找最小的前几个
: 例如我想取前三小
: 也就是6 8 12
: 而我想知道他们的原始index
至於这个暂时也想不出有什麽比较好的方法
我目前一时想到的也是产生一个新array或List去作排序再去找index
List<int> listA = A.ToList();
listA.Sort();
// 6, 8, 12
int[] newA = listA.TakeWhile((number, index) => index < 3).ToArray();
//4, 2, 0 (6, 8, 12 的 index)
int[] mins = newA.Select(number => Array.IndexOf(A, number)).ToArray();
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.104.137.229
※ 编辑: ashram 来自: 59.104.137.229 (01/25 01:51)