※ 引述《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)