如何在数组中切换max和min元素?

时间:2015-07-12 08:47:14

标签: c# arrays

  1. 我创建一个数组并从控制台填充它。
  2. 我在控制台中打印该数组。
  3. 我检测到数组中的max和min元素,并在控制台中输出。
  4. 然后我需要切换max和min元素并输出 更新的数组(不创建新数组)。
  5. 我可以选择输出包含切换(最大和最小)元素的新数组。
  6. private static void Main(string[] args)
        {
            int i;
            int MaxElementIndex = 0;
            int MinElementIndex = 0;
            int temp = 0;
            int[] t = new int[5];
    
            for (i = 0; i < 5; i++)
            {
                Console.WriteLine("enter {0} element array", i + 1);
                t[i] = int.Parse(Console.ReadLine());
            }
            int max = t[0];
            for (i = 0; i < 5; i++)
            {
                if (max < t[i])
                {
                    max = t[i];
                    MaxElementIndex = i;
                }
            }
            Console.WriteLine("the maximum a value is equal {0} and index number is {1}", max, MaxElementIndex);
            int min = t[0];
            for (i = 0; i < 5; i++)
            {
                if (min > t[i])
                {
                    min = t[i];
                    MinElementIndex = i;
                }
            }
            Console.WriteLine("the minimun value is equal {0} and index number is {1}", min, MinElementIndex);
            Console.WriteLine("Initial array: ");
            foreach (var item in t)
            {
                Console.Write(item.ToString());
            }
            Console.ReadKey();
            Console.WriteLine("Changed array:");
            MaxElementIndex = temp;
            MinElementIndex = MaxElementIndex;
            temp = MinElementIndex;
            foreach (var newItem in t)
            {
                Console.Write(newItem.ToString());
            }
            Console.ReadKey();
        }
    

    问题是我不知道如何使用切换元素获取旧数组。带有temp变量的模式返回“0”。

2 个答案:

答案 0 :(得分:1)

您的代码中的此部分有误:

Console.ReadKey();
Console.WriteLine("Changed array:");
MaxElementIndex = temp;
MinElementIndex = MaxElementIndex;
temp = MinElementIndex;

它应该是:

Console.ReadKey();
Console.WriteLine("Changed array:");
temp = t[MaxElementIndex];
t[MaxElementIndex] = t[MinElementIndex];
t[MinElementIndex] = temp;

首先将t [maxElement]存储在temp变量中,然后用t [minElement]替换它,最后将最小值替换为存储在temp变量中的最小值。

答案 1 :(得分:1)

问题是您正在切换临时变量。但是你想要在数组中切换min和max元素。您的切换代码应如下所示:

temp = t[MaxElementIndex];
t[MaxElementIndex]=t[MinElementIndex];
t[MinElementIndex]=temp;

然后你应该遍历你的阵列:

Console.WriteLine("Switched array: ");
foreach (var newItem in t)
    {
        Console.Write(newItem.ToString());
    }

希望这有帮助。