У меня приведенный ниже код работает нормально, который находит элементы, которые похожи между собой в списке на ± 2. Я хотел бы иметь 2 версии, чтобы проверить, какая из них работает быстрее.
Версия a) с вложенными циклами, как показано ниже. Однако в последней части кода есть! List.Contains (), который я хотел бы заменить другим циклом For, поскольку Contains () добавляет 4500 тиков, в то время как остальные 2 вложенных в циклы занимают только 1500 тиков. Поэтому я был бы признателен, если бы кто-то мог помочь заменить Contains () другим циклом for и получить такой же результат.
Версия b) то же самое, но с LINQ.
В обеих версиях элементы в выходном списке intTestResult должны быть: (1, 2, 8, 9, 10, 12)
int intOffset = 2;
List<int> intTest = new List<int> { 1, 2, 5, 8, 9, 10, 12, 15, 19, 24 };
List<int> intTestResult = new List<int>();
var S1 = Stopwatch.StartNew();
for (int a = 0; a < intTest.Count; a++)
{
int int1 = intTest[a];
for (int b = 0; b < intTest.Count; b++)
{
int int2 = intTest[b];
if (int1 + intOffset >= int2 && int1 - intOffset <= int2 && int1 != int2)
{
if (!intTestResult.Contains(int1))
intTestResult.Add(int1);
}
}
}
S1.Stop();
Console.WriteLine("Ticks = " + S1.ElapsedTicks);
/ * прошедших 6000
Элементы intTestResult (1, 2, 8, 9, 10, 12) * /