读书人

获取数组最大值或最小值的下标集合。网

发布时间: 2012-05-24 11:55:41 作者: rapoo

获取数组最大值或最小值的下标集合。。。网上的有的有问题
比喻说个数组
int[] intArray = { 1, 3, 7, 12, 12, 6, 1, 8 };

那么这个最大值的下标就是 3 ,4
最小值的下标就是 0,6

这个程序怎么写啊?

[解决办法]
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();

[解决办法]
参考:

C# code
        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 */ 

读书人网 >C#

热点推荐