Як збільшити швидкість вставки в колекцію set stack overflow російською

Можна зробити кілька поліпшень:

  1. notExistDuplicate реалізувати у вигляді бінарного пошуку. тому це можливо, тому що у вас масив відсортований за hashcod'ам об'єктів
  2. sortByHashCode реалізувати за допомогою quick sort. або merge sort. або будь-який інший алгоритм з кращого асимптотикою, ніж O (n ^ 2)
  3. Можна зробити вставку хитріше - НЕ сортувати кожен раз новий масив. Тобто notExistDuplicate повертає індекс елемента - якщо елемент знайдений або - (position + 1) якщо об'єкт не знайдено. Тоді потрібно буде лише скопіювати елементи з масиву, вставивши при цьому новий елемент в клітинку з індексом position.

відповідь дан 29 Січня о 22:09

спасибі за відповідь. З приводу пункту 3, я не зрозумів яким чином notExistDuplicate знатиме необхідну осередок? Значить там доведеться все одно сортування застосувати? Тоді яка різниця там або тут її викликати на продуктивність не впливає. Або я якось не так вас зрозумів? - Pavel 30 січ в 3:01

@ Павло метод буде виробляти бінарний пошук, в ході якого буде з'ясовано вихідний індекс елемента або ж позиція на якій повинен бути. Так, сортування обов'язкове. Метод викликається один раз, але за рахунок того що він буде повертати індекс, а не значення boolean ми надалі можемо зменшити кількість операцій, за рахунок цього власне і весь boost - Artem Konovalov 30 Січня о 7:15

Схожі статті