获取数组最大值或最小值的下标集合。。。网上的有的有问题 比喻说个数组 int[] intArray = { 1, 3, 7, 12, 12, 6, 1, 8 };那么这个最大值的下标就是 3 ,4 最小值的下标就是 0,6这个程序怎么写啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int[] p = new int[100]; //存放所有的最大值 int position = 0;//存放最大值的位置 int j = 1;//存放相同最大值的位置 for (int i = 1; i < 100; i++) { if (intArray [i] > intArray [position]) { position = i; j = 1; } else if (intArray [i] == intArray [position]) { p[j++] = i; } } p[0] = position; if (j < 100) { p[j] = -1; } Console.WriteLine("最大值为" + intArray [position]); Console.WriteLine("最大值的位置为:"); for (int i = 0; i < 100; i++) { if (p[i] == -1) break; Console.WriteLine(p[i]+1); } Console.ReadLine(); private void GetMp(out string maxs,out string mins){int max=intArray[0];int min=max;maxs="";mins="";//找出最大和最小值for(int i=1;i<intArray.length;i++){ if(intArray[i]>max) { max=intArray[i]; } if(intArray[i]<min) { min=intArray[i]; }}//找出下标for(int i=0;i<intArray.length;i++){ if(intArray[i]==max) { maxs+=i.ToString()+","; } if(intArray[i]==min) { mins+=i.ToString()+";"; }}maxs=maxs.SubString(0,maxs.Length-1);mins=mins.SubString(0,mins.Length-1);} 用一个变量保存当前最大值,初始化为MinValue;再用一个数组保存该最大值对应的下标。用一个循环逐一取数据与当前最大值比较,如果大于,则更新当前最大值,并清空下标数组;如果等于,则将下标添加到数组中;如果小于则不做任何处理。 用栈作就行,当值>max或<min,清空栈,将当前值入栈,=max或=min时入栈。 参考: static void Main(string[] args) { int[] intArray = { 1, 3, 7, 12, 12, 6, 1, 8 }; MyClass max = new MyClass(intArray[0]); MyClass min = new MyClass(intArray[0]); for (int i = 0; i < intArray.Length; i++) { int j = intArray[i]; if (j > max.Value) { max.Value = j; max.Indexes.Clear(); max.Indexes.Add(i); } else if (j < min.Value) { min.Value = j; min.Indexes.Clear(); min.Indexes.Add(i); } else if (j == max.Value) max.Indexes.Add(i); else if (j == min.Value) min.Indexes.Add(i); } Console.WriteLine("最大值为:{0},索引为:", max.Value); foreach (int i in max.Indexes) Console.Write("{0} ", i); Console.WriteLine(); Console.WriteLine("最小值为:{0},索引为:", min.Value); foreach (int i in min.Indexes) Console.Write("{0} ", i); } class MyClass { private int value; public int Value { get { return value; } set { this.value = value; } } private List<int> indexes; public List<int> Indexes { get { return indexes; } set { indexes = value; } } public MyClass(int value) { this.value = value; indexes = new List<int>(); indexes.Add(0); } }/*输出:最大值为:12,索引为:3 4最小值为:1,索引为:0 6 */ 好贴,但只考虑了数据是1 * k的情况,有没有考虑m*n的情况?即(int[][]) c# 按行读取txt文件 关于input的问题!!! c# 将sql表内容导出到Excel 在OO中,框架设计指的是类图设计,详细设计指的是类图的细化设计,对吗? 拖管与非拖管的区别?爱管制和未受管制的区别? Split和GetUpperBound 怎么用,有没有例子! 如何使用C#读取压缩包里面的文件信息. 在存储过程里面怎么指定返回的结果行?急 一个string 与 float 转换问题 DataGrid控件编辑问题 关于winform的textBox只能输入数字的设置,各位大侠请进 如何利用BHO作出这样的效果
int position = 0;//存放最大值的位置
int j = 1;//存放相同最大值的位置 for (int i = 1; i < 100; i++)
{
if (intArray [i] > intArray [position])
{
position = i;
j = 1;
}
else if (intArray [i] == intArray [position])
{
p[j++] = i;
}
}
p[0] = position; if (j < 100)
{
p[j] = -1;
}
Console.WriteLine("最大值为" + intArray [position]);
Console.WriteLine("最大值的位置为:");
for (int i = 0; i < 100; i++)
{
if (p[i] == -1)
break;
Console.WriteLine(p[i]+1);
}
Console.ReadLine();
{
int max=intArray[0];
int min=max;
maxs="";
mins="";
//找出最大和最小值
for(int i=1;i<intArray.length;i++)
{
if(intArray[i]>max)
{
max=intArray[i];
}
if(intArray[i]<min)
{
min=intArray[i];
}
}
//找出下标
for(int i=0;i<intArray.length;i++)
{
if(intArray[i]==max)
{
maxs+=i.ToString()+",";
}
if(intArray[i]==min)
{
mins+=i.ToString()+";";
}
}
maxs=maxs.SubString(0,maxs.Length-1);
mins=mins.SubString(0,mins.Length-1);
}
{
int[] intArray = { 1, 3, 7, 12, 12, 6, 1, 8 };
MyClass max = new MyClass(intArray[0]);
MyClass min = new MyClass(intArray[0]);
for (int i = 0; i < intArray.Length; i++)
{
int j = intArray[i];
if (j > max.Value)
{
max.Value = j;
max.Indexes.Clear();
max.Indexes.Add(i);
}
else if (j < min.Value)
{
min.Value = j;
min.Indexes.Clear();
min.Indexes.Add(i);
}
else if (j == max.Value)
max.Indexes.Add(i);
else if (j == min.Value)
min.Indexes.Add(i);
}
Console.WriteLine("最大值为:{0},索引为:", max.Value);
foreach (int i in max.Indexes)
Console.Write("{0} ", i);
Console.WriteLine();
Console.WriteLine("最小值为:{0},索引为:", min.Value);
foreach (int i in min.Indexes)
Console.Write("{0} ", i);
} class MyClass
{
private int value;
public int Value
{
get { return value; }
set { this.value = value; }
} private List<int> indexes;
public List<int> Indexes
{
get { return indexes; }
set { indexes = value; }
} public MyClass(int value)
{
this.value = value;
indexes = new List<int>();
indexes.Add(0);
}
}
/*
输出:
最大值为:12,索引为:
3 4
最小值为:1,索引为:
0 6
*/
好贴,但只考虑了数据是1 * k的情况,有没有考虑m*n的情况?即(int[][])