这里面
using System;
using System.Collections.Generic;using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Medians_and_Order_Statistics
{
internal interface IArraySortHelper<TKey>
{
// Methods
int BinarySearch(TKey[] keys, int index, int length, TKey value, IComparer<TKey> comparer);
void Sort(TKey[] keys, int index, int length, IComparer<TKey> comparer);
}
static class Method<T> where T : IComparable<T>
{
public static T GetMax(T[] array) //where T : IComparable<T>
{
if (array==null)
{
throw new ArgumentNullException("array为空!");
}
T max = array[0];
foreach (T item in array)
{
max = max.CompareTo(item) >0? max : item;
}
return max;
}
public static T[] GetMinandMax(T[] array)
{
if (array == null)
{
throw new ArgumentNullException("array为空!");
}
int length = array.Length;
//假定array长度默认为奇数 1.将第一个元素的值赋值给最小值和最大值变量
int isOdd = length % 2;
int i=1;
T[] minMax = { array[0], array[0] };
//长度为偶数时:1.前两个元素比较大小分别存到最小值和最大值变量里
//2.从第3个元素遍历
if (isOdd == 0)
{
i = 2;
if (array[0].CompareTo(array[1]) < 0)
{
minMax[0] = array[0];
minMax[1] = array[1];
}
else
{
minMax[1] = array[0];
minMax[0] = array[1];
}
}
for (int j = i; j < array.Length; j=j+2)
{
if (array[j].CompareTo(array[j + 1]) < 0)
{
if (array[j].CompareTo(minMax[0]) < 0)
{
minMax[0] = array[j];
}
if (array[j + 1].CompareTo(minMax[1]) > 0)
{
minMax[1] = array[j + 1];
}
}
else
{
if (array[j+1].CompareTo(minMax[0]) < 0)
{
minMax[0] = array[j+1];
}
if (array[j].CompareTo(minMax[1]) > 0)
{
minMax[1] = array[j];
}
}
}
return minMax;
}
}