日期:2014-05-18  浏览次数:21152 次

获取数组最大值或最小值的下标集合。。。网上的有的有问题
比喻说个数组 
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 
*/