请教一个数组的基本问题,多谢多谢
有一个一维数组array 有7个元素有方法直接得到7个元素中最小值的标号嘛?
例如
arr2Lines = new int[7] {443, 7, 3232, 4, 23,232,98};
那么 最小值标号是3
--------------------编程问答-------------------- 你想问神马? --------------------编程问答-------------------- 如果有不止一个最小数怎么办 这个可以记录多个最小数的下标
--------------------编程问答-------------------- 我也想知道 --------------------编程问答--------------------
class Program
{
static void Main(string[] args)
{
int[] array=new int[]{123,234,245,564,4,35,78};
int min = array[0];
List<int> Identification = new List<int>();
for (int i = 0; i < array.Length; i++)
{
if (min > array[i])
{
min = array[i];
}
}
for(int i = 0; i < array.Length; i++)
if (min == array[i])
{
Identification.Add(i);
}
foreach (int a in Identification)
Console.WriteLine(a.ToString());
Console.ReadKey();
}
}
--------------------编程问答-------------------- var arr2Lines = new int[7] { 1, 1, 1, 1, 1, 1, 98 };
public void subtract()
{
arr2Lines = new int[7] {443, 7, 3232, 4, 23,232,98};
int min=1000;
int s=0;
for (int i = 0; i < 7; i++)
{
if (arr2Lines [i] < min)
{
min = arr2Lines [i];
s=i;
}
}
Console.WriteLine("The smallest number is{0}",s);
}
bool isfrist = true;
int min = 0;
List<int> indexs = new List<int>();
for (int i = 0, n = arr2Lines.Length; i < n; i++)
{
if (isfrist)
{
min = arr2Lines[i];
isfrist = false;
indexs.Add(i);
}
else
{
min = min > arr2Lines[i] ? arr2Lines[i] : min;
if (min > arr2Lines[i])
{
indexs.Clear();
indexs.Add(i);
}
if (min == arr2Lines[i])
{
indexs.Add(i);
}
}
}
for (int i=0,n=indexs.Count; i<n; i++)
{
MessageBox.Show(indexs[i].ToString());
} --------------------编程问答-------------------- int index = 0;
for (int i = 0; i < arr2Lines.Length; i++)
{
if (arr2Lines[i] == arr2Lines.Min())
{
index = i;
break;
}
} --------------------编程问答-------------------- List<int> ls = arr2Lines.ToList();
int nindex= ls.FindIndex(x => x == ls.Min()); --------------------编程问答--------------------
--------------------编程问答--------------------
int[] arr = { 5,2,7,1,1};
StringBuilder temp = new StringBuilder();
for (int i = 0; i < arr.Length; i++)
{
if (arr.Min()==arr[i])
{
temp.Append(i.ToString());
}
}
Console.WriteLine(temp.ToString());
int[] arr = { 5,2,7,1,1};
StringBuilder temp = new StringBuilder();
for (int i = 0; i < arr.Length; i++)
{
if (arr.Min()==arr[i])
{
temp.Append(i.ToString());
}
}
Console.WriteLine(temp.ToString());
是不是想要这个效果? --------------------编程问答--------------------
int nindex= arr2Lines.ToList().FindIndex(x => x == arr2Lines.Min());
想偷懒的话, 这样也可以。 --------------------编程问答--------------------
--------------------编程问答-------------------- int[] arr = new int[]{11,2,3,4,5,6,7};
int GetMinIndex(int[] arr)
{
int[] copy = (int[])arr.Clone();
Array.Sort(copy);
return Array.IndexOf(arr, copy[0]);
}
MessageBox.Show(arr.Min().ToString()); --------------------编程问答-------------------- private void button2_Click(object sender, EventArgs e)
{
var arr2Lines = new int[7] { 1, 1, 1, 1, 1, 1, 98 };
int min = arr2Lines[0];
List<int> indexs = new List<int>();
for (int i = 0, n = arr2Lines.Length; i < n; i++)
{
min = min > arr2Lines[i] ? arr2Lines[i] : min;
if (min > arr2Lines[i])
{
indexs.Clear();
indexs.Add(i);
}
if (min == arr2Lines[i])
{
indexs.Add(i);
}
}
MessageBox.Show("最小值为:"+min.ToString());
for (int i=0,n=indexs.Count; i<n; i++)
{
MessageBox.Show("下标为:"+ indexs[i].ToString());
}
}
可能有多个最小值吗???? --------------------编程问答-------------------- 自己遍历一遍也可以。
要么就
int nindex= arr2Lines.ToList().FindIndex(x => x == arr2Lines.Min());
不过这样,只能得到第一个位置。 --------------------编程问答--------------------
var arr2Lines = new[] {443, 7, 3232, 4, 23,4,232,98};
int minInt = arr2Lines.ToList().Find(x => x == arr2Lines.Min());
for (int i = 0; i < arr2Lines.Length; i++)
{
if (arr2Lines[i] == minInt)
{
Response.Write(i + "<br>");
}
}
实测通过,先取最小值,然后比对,i 就是你要的做小的索引值 --------------------编程问答--------------------
var arr2Lines = new[] {443, 7, 3232, 4, 23,4,232,98};
for (int i = 0; i < arr2Lines.Length; i++)
{
if (arr2Lines[i] == arr2Lines.Min())
{
Response.Write(i + "<br>");
}
}
这个更简单!!! --------------------编程问答-------------------- int GetIndex(int[] iArray)
{
int index=0, iVar=iArray[0];
for(int i=1;i<iArray.Length;i++)
{
if(iVar>iArray[i])
{
index=i;
iVar=iArray[i];
}
}
return index;
} --------------------编程问答--------------------
没有多个的话 Linq就是帅啊. --------------------编程问答-------------------- --------------------编程问答-------------------- 方法很多,一般都是自己写函数找出满足要求的索引,至于那种适合自己的口味,仁者见仁,楼主自己斟酌 --------------------编程问答--------------------
要是俺,VS2005 ,想偷懒也偷不了。。。可恶的lambda。。。
int[] a=new int[6]{443, 7, 3232, 4, 23,232,98};
a.Min();
List<int> b=new List<int>();
b.Min();
错误 1 “System.Array”并不包含“Min”的定义
错误 2 “System.Collections.Generic.List<int>”并不包含“Min”的定义
????????????、为什么我的没有Min()方法?? --------------------编程问答--------------------
原来是LINQ的。。。怪不得 可恶的2005.。。。 --------------------编程问答--------------------
最小值只有一个吧……用Linq最简单 --------------------编程问答--------------------
这样也可以啊 --------------------编程问答-------------------- 2.0 没有扩展方法。 min()是扩展方法。 --------------------编程问答-------------------- 放弃吧。。 2.0 连tolist都没。 --------------------编程问答-------------------- 就用楼上的那些代码吧。 --------------------编程问答-------------------- 路过而已 --------------------编程问答-------------------- --------------------编程问答--------------------
补充:.NET技术 , C#