查找表的最小值

时间:2019-06-02 19:16:39

标签: c#

我需要找到表中最低条目的值和位置。问题是,我不知道如何指定它。我不能将任何数字都放入int值中,因为用户始终可以指定更高的值。它适用于最大值,但不适用于最小值。

        Console.WriteLine("Podaj wymiar tablicy.");
        int dlugosc = Convert.ToInt32(Console.ReadLine());
        int[] tablica = new int[dlugosc];
        int max = 0;
        int min = tablica[0];
        for (int i = 0; i < tablica.Length; i++)
        {
            Console.WriteLine("Podaj wartosc {0} elementu.", i + 1);
            tablica[i] = Convert.ToInt32(Console.ReadLine());
        }

        for (int i = 0; i < tablica.Length; i++)
        {
            while (tablica[i] > max)
            {
                max = tablica[i];
            }
        }
        for (int x = 0; x < tablica.Length; x++)
        {
            while (tablica[x] < min)
            {
                min = tablica[x];
            }
        }
        int najmniejsze_miejsce = Array.IndexOf(tablica, min);
        int najwieksze_miejsce = Array.IndexOf(tablica, max);
        Console.WriteLine("Najwyzsza wartosc tablicy to {0}.", max);
        Console.WriteLine("Najwieksza wartosc wystepuje na miejscu {0}.", najwieksze_miejsce);
        Console.WriteLine("Najniższa wartość tablicy to {0}.", min);
        Console.WriteLine("Najnizsza wartosc wystepuje na miejscu {0}", najmniejsze_miejsce);
        Console.ReadKey();

4 个答案:

答案 0 :(得分:4)

您可以使用:

Console.WriteLine(tablica.Min());

因为您使用整数数组

答案 1 :(得分:0)

当前代码如下:

int min = tablica[0];
for (int i = 0; i < tablica.Length; i++)
{
    Console.WriteLine("Podaj wartosc {0} elementu.", i + 1);
    tablica[i] = Convert.ToInt32(Console.ReadLine());
}

在初始化数组之前声明的最小值意味着它只是零。除非是负数,否则数组中的任何值都不能小于。

要解决此问题,应在初始化数组后声明最小值:

for (int i = 0; i < tablica.Length; i++)
{
    Console.WriteLine("Podaj wartosc {0} elementu.", i + 1);
    tablica[i] = Convert.ToInt32(Console.ReadLine());
}
int min = tablica[0];`

答案 2 :(得分:0)

您可以在表格中找到最小值的首次出现

int minIndex = Array.IndexOf(tablica, tablica.Min());

或简单:

Console.WriteLine(Convert.ToString(Array.IndexOf(tablica, tablica.Min())));

答案 3 :(得分:0)

在需要进行扫描时,通常在循环之前将最小值设置为Int.MaxValue,将最大值设置为Int.MinValue,然后确保将其设置在第一个元素和任何其他元素上可以提高这两个值的元素。

然后,您可以在一个循环中完成所有操作(当您表示while时,无需使用if)。您还可以随时跟踪索引:

int max = Int.MinValue;
int min = Int.MaxValue;
int maxindex = -1;
int minindex = -1;

for (int i = 0; i < tablica.Length; i++)
{
   if (tablica[i] > max) { max = tablica[i]; maxindex = i; }
   if (tablica[i] < min) { min = tablica[i]; minindex = i; }
}