如果索引未排序,则必须至少遍历数组一次以找到最大值。我会使用一个简单的for循环:int? maxVal = null; //nullable so this works even if you have all super-low negativesint index = -1;for (int i = 0; i < anArray.Length; i++){ int thisNum = anArray[i]; if (!maxVal.HasValue || thisNum > maxVal.Value) { maxVal = thisNum; index = i; }}这比使用LINQ或其他单线解决方案的方法更为冗长,但可能更快一些。确实没有比O(N)更快的方法。