问题相关代码
class GetCycle
{
public int getCycle(float[] data)
{
int indexMin = 0;
int indexMax = 0;
List<int> cycleList = new List<int>();
int[] cycleGather = null;
int cycle = 0;
var max = data[0];
var min = data[0];
//计算每100个数的周期
for (int j = 0; j < data.Length - 100; j++)
{
for (int i = j; i < j + 100; i++)
{
if (max < data[i])
{
int temp = 0;
max = data[i];
temp = i;
if (indexMax < temp)
{
indexMax = temp;
}
}
if (min > data[i])
{
int temp = 0;
min = data[i];
temp = i;
if (indexMin < temp)
{
indexMin = temp;
}
}
cycleList.Add(Math.Abs(indexMax - indexMin) * 2);
}
}
cycleGather = cycleList.ToArray();
//找出周期集合中重复次数最多的数值
var res = from n in cycleGather
group n by n into g
orderby g.Count() descending
select g;
var gr = res.First();
foreach (var x in gr)
{
cycle = x;
}
return cycle;
}
}
运行结果
我想每个小周期求一次下标差,但是按我写的代码求出来的结果是整个数组的最大最小值的下标差