//普通算法
var numDoubles=new double[]{125,514,54,54,5,45,45,25,54,5,45121,4,54,5,5};
var max = numDoubles[0];
var min = numDoubles[0];
for (int i = 1; i < numDoubles.Length; i++)
{
if (numDoubles[i]>max)
{
max = numDoubles[i];
}
if (numDoubles[i]<min)
{
min = numDoubles[i];
}
}
Console.Write($"最大值:{max},最小值:{min}");
//分治算法实现“求数组中最大值”
var numDoubles=new double[]{125,514,54,54,5,45,45,25,54,5,45121,4,54,5,5};
double GetMax(double[] arr,int left,int right)
{
if (arr==null||arr.Length==0)
{
return -1;
}
//如果查找范围中仅有一个数字
if (right-left<=1)
{
if (arr[left]>=arr[right])
{
return arr[left];
}
}
//等量划分成 2 个区域
var middle = (right-left)/2 + left;
var max_left = GetMax(arr,left,middle);
var max_right = GetMax(arr,middle+1,right);
if(max_left >= max_right) {
return max_left;
}else {
return max_right;
}
}
var max = GetMax(numDoubles, 0, numDoubles.Length-1);
Console.Write($"最大值:{max}");