数组前后值比较,求代码改造

.Net技术 码拜 5年前 (2016-04-29) 412次浏览
float[] H = new float[100];
假设
H[0]=1329.53
H[2]=1330.79
H[3]=1330.48
H[4]=1328.34
H[5]=1335.51
H[6]=1330.54
H[7]=1333.97
H[8]=1334.02
H[0]=1329.93
H[10]=1329.85
H[N]=xxx

for (int j = 0; j <100; j++)
            {
 if (H[j] > H[j + 1] && H[j] > H[j + 2] && H[j] > H[j + 3] && H[j] > H[j + 4]&&H[j] > H[j - 1] && H[j] > H[j - 2] && H[j] > H[j - 3] && H[j] > H[j - 4])
                    
             {
                 //H[j]  
              }
}

需求是设定一个常数,根据设定常数,找出数组中大于左右两边常数个数的最高值
例:假如常数设为6,找出任一个数左边6个,和右边6个均小于该数的值。求对以上代码改造(以上是写死的,只能比较前后四个,本人需要能比较前后任意设定数量的值),不知道本人说清楚没有,小菜座等大神帮助解决。

解决方案

10

            float[] a = { 1329.53f, 1330.79f, 1330.48f, 1328.34f, 1335.51f, 1330.54f, 1333.97f, 1334.02f, 1329.93f, 1329.85f };
            int n = 1; //你给的数据只能满足前后 1
            bool flag = true;
            for (int i = 0; i < a.Length - n; i++)
            {
                flag = true;
                if (a[i] < a[n + i])
                {
                    for (int j = 1; j < n; j++)
                    {
                        if (a[i + j] > a[n + i] || a[n + i + j] < a[n + i])
                        {
                            flag = false;
                            break;
                        }
                    }
                    if (flag) Console.WriteLine("[{0}] {1}", n + i, a[n + i]); 
                }
            }

数组前后值比较,求代码改造

30

       public void finds(int i)
{
float[] H = new float[100];
//数组100个元素,i<(100-1)/2,i<=49,不然相邻i个元素不存在

for (int j = i, k = 1; j <100-i; j++)
{
for( k =1;k<i+1;k++)
{
if(H[j] > H[j-k] && H[j] > H[j+k])  //元素j为中心,成对比较。假如j最大,for会正常执行完(K=i+1),否则中途break
{
}
else           //有比H[j]大的元素,break
{
break;
}
}
if (k ==( i + 1))
{
//       return j; //第j个为最大
}
}
}
元素没填充,本人填了运行,没有判断j不存在的情况


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明数组前后值比较,求代码改造
喜欢 (0)
[1034331897@qq.com]
分享 (0)