在给定的多个数字中查找到最小值,并且获取最小值在数字中的位置。
- 当多个数字中不存在重复值时,仅需要遍历一遍存储这些数字的列表即可;
- 当多个数字中存在重复值时,可以新增一个列表
MinIndex
来存储当前最小值的位置,在遍历过程中最小值出现变化时,需要清除 MinIndex
并将新的最小值的位置添加到 MinIndex
中,当遍历过程中出现最小值的重复值时,需要将该值的位置也填进 MinIndex
中。
public static List<int> FindMin(List<float> NumList)
{
List<int> MinIndex = new List<int>() { 0 };
float MinNum = NumList[0];
for (int i = 1; i < NumList.Count; i++)
{
if (MinNum > NumList[i])
{
MinNum = NumList[i];
MinIndex.Clear();
MinIndex.Add(i);
}
else if (MinNum == NumList[i])
{
MinIndex.Add(i);
}
}
if (MinIndex.Count > 1)
{
System.Random rand = new System.Random();
List<int> RandList = new List<int>();
foreach (int i in MinIndex)
{
RandList.Insert(rand.Next(RandList.Count), i);
}
return RandList;
}
else
{
return MinIndex;
}
}