//第一次迭代
while (true)
{
for (int i = 1; i < count - 2; i++)//迭代count - 2,减去第一个强度值和最后一个强度值
{
if (i < count - 1)//极限值count-1
{
double A_Strength = Convert.ToDouble(dt.Rows[i][2]);
double X_Strength = Convert.ToDouble(dt.Rows[i - 1][2]);
double I_Strength = Convert.ToDouble(dt.Rows[i + 1][2]);
double X_WaveLength = Convert.ToDouble(dt.Rows[i][1]);
double Avg_Strength = (X_Strength + I_Strength) / 2;
if (A_Strength < X_Strength && A_Strength < I_Strength)
{
Min1_WaveLength.Add(X_WaveLength);
Min1_Strength.Add(A_Strength);
dt.Rows[i][1] = X_WaveLength;
dt.Rows[i][2] = A_Strength; //替代中间值
}
}
}
if (!bGoOn) // bGonOn == FALSE,表示整个for循环里都是符合要求的,退出
break;
}
//第一次以外的迭代
while (true)
{
for (int j = 1; j < count - 2; j++)//迭代count - 2,减去第一个强度值和最后一个强度值
{
if (j < count - 1)//极限值count-1
{
double A_Strength = Convert.ToDouble(dt.Rows[j][2]);
double X_Strength = Convert.ToDouble(dt.Rows[j - 1][2]);
double I_Strength = Convert.ToDouble(dt.Rows[j + 1][2]);
double X_WaveLength = Convert.ToDouble(dt.Rows[j][1]);
double Avg_Strength = (X_Strength + I_Strength) / 2;
if (A_Strength > Avg_Strength)
{
Minn_WaveLength.Add(X_WaveLength);
Minn_Strength.Add(A_Strength);
Minn_Strength.Reverse();
dt.Rows[j][1] = X_WaveLength;
dt.Rows[j][2] = Avg_Strength; // 取平均替代中间值
bGoOn = true; // 表示需要再循环一次
}
}
}
if (!bGoOn) // bGonOn == FALSE,表示整个for循环里都是符合要求的,退出
break;
}
X_Strength字段是需要迭代的值
数据库第一行和最后一行不迭代 第一次迭代: 第二列和第一列,第三列做比较,如果第二列比第一列和第三列小就得到第二列的值 第三列和第二列 第四列做比较 以此类推.............
第二次迭代: 如果第一次迭代的值大于 它左右两个数的平均值就变成左右两个数的平均值
第三次迭代,第四次迭代都是以此类推
一直迭代到不能迭代为止就退出来 每一次迭代的数据都需要保存,我做了一点就不会了。。麻烦求详细代码