如何在给定数组中找到最高、第二高数字、最低第二低数字

发布于 2024-09-08 18:08:37 字数 143 浏览 1 评论 0原文

谁能告诉我如何如何找到给定数组中的最高、第二高数字、最低第二最低数字

var numbers = new[] {855,3,64,6,24,75,3,6,24,45};

任何指针和建议都会非常有帮助。谢谢

Can anyone Please tell me how to How to find highest ,second highest number, Lowest Second Lowest number in given Array

var numbers = new[] {855,3,64,6,24,75,3,6,24,45};

Any pointer and suggestion would really helpful . Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

唠甜嗑 2024-09-15 18:08:37

您也可以尝试这个 -

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class secondHighestLowest : System.Web.UI.Page
{
    int[] arr = new int[10] { 45, 3, 64, 6, 24, 75, 3, 6, 24, 45 };

    protected void Page_Load(object sender, EventArgs e)
    {
        secondHighestLowestNumber();
        secoundLowestNumber();
    }

    private void secondHighestLowestNumber()
    {
        int firstHighestNumber = arr[0];
        int secondHighestNumber = arr[0];
        for(int i = 0; i<arr.Length; i++)
        {
            if (arr[i]>firstHighestNumber)
            {
                firstHighestNumber = arr[i];
            }
        }

        for (int x = 0; x < arr.Length; x++)
        {
            if (arr[x]>secondHighestNumber && firstHighestNumber!=arr[x])
            {
                secondHighestNumber = arr[x];
            }
        }

        Response.Write("secondHighestNumber---- " + secondHighestNumber + "</br>");
    }

    private void secoundLowestNumber()
    {
        int firstLowestNumber = arr[0];
        int secondLowestNumber = arr[0];
        for (int i = 0; i < arr.Length; i++)
        {
            if (arr[i] < firstLowestNumber)
            {
                firstLowestNumber = arr[i];
            }
        }

        for (int x = 0; x < arr.Length; x++)
        {
            if (arr[x] < secondLowestNumber && firstLowestNumber != arr[x])
            {
                secondLowestNumber = arr[x];
            }
        }

        Response.Write("secondLowestNumber---- " + secondLowestNumber + "</br>");
    }
}

希望这有帮助:)

You can also try this -

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class secondHighestLowest : System.Web.UI.Page
{
    int[] arr = new int[10] { 45, 3, 64, 6, 24, 75, 3, 6, 24, 45 };

    protected void Page_Load(object sender, EventArgs e)
    {
        secondHighestLowestNumber();
        secoundLowestNumber();
    }

    private void secondHighestLowestNumber()
    {
        int firstHighestNumber = arr[0];
        int secondHighestNumber = arr[0];
        for(int i = 0; i<arr.Length; i++)
        {
            if (arr[i]>firstHighestNumber)
            {
                firstHighestNumber = arr[i];
            }
        }

        for (int x = 0; x < arr.Length; x++)
        {
            if (arr[x]>secondHighestNumber && firstHighestNumber!=arr[x])
            {
                secondHighestNumber = arr[x];
            }
        }

        Response.Write("secondHighestNumber---- " + secondHighestNumber + "</br>");
    }

    private void secoundLowestNumber()
    {
        int firstLowestNumber = arr[0];
        int secondLowestNumber = arr[0];
        for (int i = 0; i < arr.Length; i++)
        {
            if (arr[i] < firstLowestNumber)
            {
                firstLowestNumber = arr[i];
            }
        }

        for (int x = 0; x < arr.Length; x++)
        {
            if (arr[x] < secondLowestNumber && firstLowestNumber != arr[x])
            {
                secondLowestNumber = arr[x];
            }
        }

        Response.Write("secondLowestNumber---- " + secondLowestNumber + "</br>");
    }
}

Hope this is helpful :)

私藏温柔 2024-09-15 18:08:37

您没有指定复杂性要求:一种方法是按降序对数组进行排序,并选择顶部、第二个和第三个项目。

另一种是构建一个堆,然后执行3次remove root(每次删除后都会重建堆)。

You don't specify the complexity requirement: one way is to sort the array in descending order and pick the top, second and third items.

Another is to build a Heap, and then perform remove root 3 times (with the heap being rebuilt after each remove).

但可醉心 2024-09-15 18:08:37

假设数组中至少有 2 个项目,您可以使用 OrderBy()ElementAt()

var numbers = new[] { 855, 3, 64, 6, 24, 75, 3, 6, 24, 45 };
var secondLowest = numbers.OrderBy(num => num).ElementAt(1);
var secondHighest = numbers.OrderBy(num => num).Reverse().ElementAt(1);

:最高和最低更简单,可以使用 Max()Min() LINQ 方法来完成。

var lowest = numbers.Min();
var highest = numbers.Max();

如果您担心复杂性,可以使用选择算法< /强>。使用它,您可以执行 O(n) 复杂度的运算。

Assuming you have at least 2 items in the array you can use OrderBy() and ElementAt():

var numbers = new[] { 855, 3, 64, 6, 24, 75, 3, 6, 24, 45 };
var secondLowest = numbers.OrderBy(num => num).ElementAt(1);
var secondHighest = numbers.OrderBy(num => num).Reverse().ElementAt(1);

Getting the highest and lowest is simpler and can be done using Max() and Min() LINQ methods.

var lowest = numbers.Min();
var highest = numbers.Max();

If you're worried about complexity, you can achieve better result using Selection algorithm. Using it you can perform the operations in O(n) complexity.

十秒萌定你 2024-09-15 18:08:37

使用 Linq 概念

var a = new int[] { 855, 3, 64, 6, 24, 75, 3, 6, 24, 45 };

var Max = a.Max(z => z);
var Min = a.Min( z => z);
var SMax = a.OrderByDescending(z=>z).Skip(1).First();
var SMin = a.OrderBy(z => z).Skip(1).First();

Using Linq Concepts

var a = new int[] { 855, 3, 64, 6, 24, 75, 3, 6, 24, 45 };

var Max = a.Max(z => z);
var Min = a.Min( z => z);
var SMax = a.OrderByDescending(z=>z).Skip(1).First();
var SMin = a.OrderBy(z => z).Skip(1).First();
南笙 2024-09-15 18:08:37
        int[] i = new int[] { 4, 8, 1, 9, 2, 7, 3 };
        Array.Sort(i);
        Console.WriteLine("Highest number :" + i[i.Length-1]);
        Console.WriteLine("Second highest number :"+i[i.Length-2]);
        Console.WriteLine("Lowest number :" + i[i.Length-i.Length]);
        Console.WriteLine("Second Lowest number :" + i[i.Length -i.Length+1]);

        Output : Highest number : 9

                 Second highest number : 8

                 Lowest number : 1

                 Second Lowest number : 2
        int[] i = new int[] { 4, 8, 1, 9, 2, 7, 3 };
        Array.Sort(i);
        Console.WriteLine("Highest number :" + i[i.Length-1]);
        Console.WriteLine("Second highest number :"+i[i.Length-2]);
        Console.WriteLine("Lowest number :" + i[i.Length-i.Length]);
        Console.WriteLine("Second Lowest number :" + i[i.Length -i.Length+1]);

        Output : Highest number : 9

                 Second highest number : 8

                 Lowest number : 1

                 Second Lowest number : 2
寄意 2024-09-15 18:08:37

为什么可以在中完成两个循环

        int[] myArray = new int[] { 2, 4, 3, 6, 9 };

        int max1 = 0;
        int max2 = 0;

        for (int i = 0; i < myArray.Length; i++)
        {
            if (myArray[i] > max1)
            {
                max2 = max1;
                max1 = myArray[i];

            }
            else
            {
                max2 = myArray[i];
            }
        }

        Console.WriteLine("first" + max1.ToString());
        Console.WriteLine("Second" + max2.ToString());
        Console.ReadKey();

Why two loops when can be done in

        int[] myArray = new int[] { 2, 4, 3, 6, 9 };

        int max1 = 0;
        int max2 = 0;

        for (int i = 0; i < myArray.Length; i++)
        {
            if (myArray[i] > max1)
            {
                max2 = max1;
                max1 = myArray[i];

            }
            else
            {
                max2 = myArray[i];
            }
        }

        Console.WriteLine("first" + max1.ToString());
        Console.WriteLine("Second" + max2.ToString());
        Console.ReadKey();
看海 2024-09-15 18:08:37

我首先使用选择排序算法按升序排列它们,然后显示值。

static void Main(string[] args)
    {
        int[] Num =new int[] { 3, 4, 5, 6, 7, 0,99,105,55 };

        int temp;
        for(int a=0;a<Num.Length-1;a++)
        {
            for(int b=a+1;b<Num.Length;b++)
            {
                if(Num[a]>Num[b])
                {
                    temp = Num[a];
                    Num[a] = Num[b];
                    Num[b] = temp;
                }
            }

        }


        Console.WriteLine("Max value ="+Num[Num.Length-1]+"\nSecond largest Max value="+ Num[Num.Length - 2]+"\nMin value =" + Num[0] + "\nSecond smallest Min value=" + Num[1]);
        Console.WriteLine("\nPress to close");
        Console.ReadLine();
    }

I have first arranged them using Selection Sort algorithm in ascending order, then i displayed values.

static void Main(string[] args)
    {
        int[] Num =new int[] { 3, 4, 5, 6, 7, 0,99,105,55 };

        int temp;
        for(int a=0;a<Num.Length-1;a++)
        {
            for(int b=a+1;b<Num.Length;b++)
            {
                if(Num[a]>Num[b])
                {
                    temp = Num[a];
                    Num[a] = Num[b];
                    Num[b] = temp;
                }
            }

        }


        Console.WriteLine("Max value ="+Num[Num.Length-1]+"\nSecond largest Max value="+ Num[Num.Length - 2]+"\nMin value =" + Num[0] + "\nSecond smallest Min value=" + Num[1]);
        Console.WriteLine("\nPress to close");
        Console.ReadLine();
    }
森林散布 2024-09-15 18:08:37

即使有重复记录,该算法也适用。

int[] intArrayInput= new int[] { 855, 3, 64, 6, 24, 75, 3, 6, 24, 45, 855 };

使用排序:

Array.Sort(intArrayInput);
int intMax = intArrayInput[intInput.Length - 1];
int intLow = intArrayInput[0];

并使用 LINQ:

int intSecondMax = intArrayInput.OrderByDescending(x => x).Distinct().Skip(1).First();
int intSecondLow = intArrayInput.OrderBy(x => x).Distinct().Skip(1).First();

This algorithm is applicable even with duplicate record.

int[] intArrayInput= new int[] { 855, 3, 64, 6, 24, 75, 3, 6, 24, 45, 855 };

Using Sort:

Array.Sort(intArrayInput);
int intMax = intArrayInput[intInput.Length - 1];
int intLow = intArrayInput[0];

And using LINQ:

int intSecondMax = intArrayInput.OrderByDescending(x => x).Distinct().Skip(1).First();
int intSecondLow = intArrayInput.OrderBy(x => x).Distinct().Skip(1).First();
眼眸里的那抹悲凉 2024-09-15 18:08:37

假设您的数组至少有两个成员,这是一个简单的解决方案。

对于数组中的最小数字。

              
 Array.Sort(new);

            string newNumber = string.Join(" ", new[0]);
            return newNumber;

对于数组中第二小的数字。

                Array.Sort(new);
                string newNumber = string.Join(" ", new[1]);
                return newNumber;

为数组中的最大数字。

                    Array.Sort(new);
                    string newNumber = string.Join(" ", new[new.Length - 1]);
                    return newNumber;

为数组中第二大的数字。

                        Array.Sort(new);
                        string newNumber = string.Join(" ", new[new.Length - 1]);
                        return newNumber;

Here is an easy solution assuming you array has at least two members.

For the lowest number in the array.

              
 Array.Sort(new);

            string newNumber = string.Join(" ", new[0]);
            return newNumber;

For second lowest number in the array.

                Array.Sort(new);
                string newNumber = string.Join(" ", new[1]);
                return newNumber;

for the highest number in the array.

                    Array.Sort(new);
                    string newNumber = string.Join(" ", new[new.Length - 1]);
                    return newNumber;

For the second highest number in the array.

                        Array.Sort(new);
                        string newNumber = string.Join(" ", new[new.Length - 1]);
                        return newNumber;

极度宠爱 2024-09-15 18:08:37

找出最大、第二大、最小和最大的最短方法第二小的数字,使用常规方法:

int LargestNumber = 0;
int SecondLargestNumber = 0;
int SmallestNumber = 0;
int SecondSmallestNumber = 0;
int[] array = new int[] { 250, 5, 17, 50, 98, 352, 2, 8, 67, 150, 200, 1 };

for (int i = 0; i < array.Length; i++)
{
    if (array[i] > LargestNumber)
    {
        SecondLargestNumber = LargestNumber;
        LargestNumber = array[i];
    }
    else if (array[i] > SecondLargestNumber)
    {
        SecondLargestNumber = array[i];
    }

    if (i == 0)
    {
        SmallestNumber = array[0];
        SecondSmallestNumber = array[1];
    }

    if (array[i] < SmallestNumber)
    {
        SecondSmallestNumber = SmallestNumber;
        SmallestNumber = array[i];
    }
    else if (array[i] < SecondSmallestNumber)
    {
        SecondSmallestNumber = array[i];
    }
}

Console.WriteLine("Largest Number : " + LargestNumber);
Console.WriteLine("Second Largest Number : " + SecondLargestNumber);
Console.WriteLine("Smallest Number : " + SmallestNumber);
Console.WriteLine("Second Smallest Number : " + SecondSmallestNumber);

Shortest way to find out largest, second largest, smallest & second smallest number, using conventional method:

int LargestNumber = 0;
int SecondLargestNumber = 0;
int SmallestNumber = 0;
int SecondSmallestNumber = 0;
int[] array = new int[] { 250, 5, 17, 50, 98, 352, 2, 8, 67, 150, 200, 1 };

for (int i = 0; i < array.Length; i++)
{
    if (array[i] > LargestNumber)
    {
        SecondLargestNumber = LargestNumber;
        LargestNumber = array[i];
    }
    else if (array[i] > SecondLargestNumber)
    {
        SecondLargestNumber = array[i];
    }

    if (i == 0)
    {
        SmallestNumber = array[0];
        SecondSmallestNumber = array[1];
    }

    if (array[i] < SmallestNumber)
    {
        SecondSmallestNumber = SmallestNumber;
        SmallestNumber = array[i];
    }
    else if (array[i] < SecondSmallestNumber)
    {
        SecondSmallestNumber = array[i];
    }
}

Console.WriteLine("Largest Number : " + LargestNumber);
Console.WriteLine("Second Largest Number : " + SecondLargestNumber);
Console.WriteLine("Smallest Number : " + SmallestNumber);
Console.WriteLine("Second Smallest Number : " + SecondSmallestNumber);
箜明 2024-09-15 18:08:37
int[] myUnSortArray = { 1, 5, 8, 3, 10, 6, 19, 5, 4, 4 };

int[] SortedArray = (from number in myUnSortArray
                     orderby number ascending
                     select number).ToArray();

int highestValue = SortedArray.Max();
int SecondHighest = SortedArray.Last(m => m < highestValue);
int[] myUnSortArray = { 1, 5, 8, 3, 10, 6, 19, 5, 4, 4 };

int[] SortedArray = (from number in myUnSortArray
                     orderby number ascending
                     select number).ToArray();

int highestValue = SortedArray.Max();
int SecondHighest = SortedArray.Last(m => m < highestValue);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文