C#如何查找数组中最大值及其索引

130

我有一个未排序的数字数组int[] anArray = { 1, 5, 2, 7 };,我需要获取数组中最大值的值和索引,这将是 7 和 3。如何实现这个功能?


到目前为止,我尝试使用Max()方法,然后使用二分查找方法来获取该最大值的索引,但是除非数组已排序,否则这种方法不起作用,所以我不能使用它。当我尝试时,它给了我负数。 - Edmund Rojas
@EdmundRojas 你不需要使用二分查找算法。对于未排序的列表,一个简单的线性查找就可以很好地解决问题。 - millimoose
22个回答

-1
在数组中查找最大和最小的数字:
int[] arr = new int[] {35,28,20,89,63,45,12};
int big = 0;
int little = 0;

for (int i = 0; i < arr.Length; i++)
{
    Console.WriteLine(arr[i]);

    if (arr[i] > arr[0])
    {
        big = arr[i];
    }
    else
    {
        little = arr[i];

    }
}

Console.WriteLine("most big number inside of array is " + big);
Console.WriteLine("most little number inside of array is " + little);

1
它将返回数组中大于/小于第一个值的最后一个值,而不是最小值/最大值。 - Tomer Wolberg

-1

虽然这篇文章有点旧,但是使用列表非常容易实现以下操作:

对于最大值:

 List<int> lst = new List<int>(YourArray);
 int Max = lst.OrderByDescending(x => x).First();

最小化:

List<int> lst = new List<int>(YourArray);
int Max = lst.OrderBy(x => x).First();

当然,您可以使用任何数字变量类型(float、decimal等)代替“int”数据类型。

顺便说一句,这非常高效,比任何其他方法都要好(个人认为)。


但它并没有回答这个问题。 - Mick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接