Оптимизации сортировки массива

208
02 августа 2019, 04:30

У меня есть два цикла "for". Когда записей ~100 они работают быстро, но когда записей больше 100000 скорость обработки может быть и час. Как я могу ускорить данный алгоритм? Я думал разбить его на несколько параллельных потоков, но тогда программа может не увидеть соответствие в разных поток, соответственно повторы останутся.

 HashSet<IP> tbl = new HashSet<IP>();
                foreach (IP x in IPs)
                {
                    if (x.DataValid())
                        tbl.Add(x);
                }
                IPs.Clear();
                IPs.AddRange(tbl);
                for (int i = 0; i < IPs.Count; i++)
                {
                    for (int j = IPs.Count - 1; j > i; j--)
                        if (IPs[i].ip.Equals(IPs[j].ip))
                            IPs.RemoveAt(j);
                    int status1 = 100 * i / IPs.Count;
                    Dispatcher.Invoke(() => LabelStatusValue.Text = status1 + "%");
                    Dispatcher.Invoke(() => progress.Value = status1);
                }

Где IPs элемент класса IP:

class IP
{
    public string ip = "";
    public string port = "";
    public List<string> data = new List<string>();
    public override int GetHashCode()
    {
        return ip.GetHashCode();
    }
    public bool DataValid()
    {
        System.Net.IPAddress address;
        int port_number = -1;
        return System.Net.IPAddress.TryParse(ip, out address)
                  && int.TryParse(port, out port_number)
                  && port_number > 0 && port_number < 65536;
    }
}

Нужно что-то сделать с двумя циклами "for". Думаю можно использовать Distinct() и с помощью LINQ получить индексы повторяющихся элементов, но у меня не хватает знаний, чтоб сделать это...

READ ALSO
Удаление связанных данных Entity Framework

Удаление связанных данных Entity Framework

Есть связанные классы:

150
В c# определить переменную условной компиляции в другом проекте

В c# определить переменную условной компиляции в другом проекте

Можно ли в c#, visualstudio определить переменную условной компиляции в другом проекте?

143
Бинарная сериализация

Бинарная сериализация

Мне необходимо была бинарная сериализация в один файл, предположим, datadat

196
DataVisualisation.Tolkit Spline chart wpf

DataVisualisation.Tolkit Spline chart wpf

Подскажите как с помощью DataVisualisationTolkit посторить сплайн график, как должна выглядить xaml разметка ? Если можно небольшой пример

147