Добрый вечер коллеги. Нужна ваша помощь.
Есть массив of Set и некоторые Set в нем могут содержать общие элементы. Такие Set нужно объединить в один Set и в итоге иметь массив Set которые не имели бы общих Int. Написал ниже код для этого. Но работает он все же медленно. Нужно уменьшить время, поскольку массив может быть до миллиона элементов.
var combinableSet = Set<Int>()
var oldCombinableSet = Set<Int>()
for k in 0..<arrayOfCombinableReadsNumbers.count
{
if arrayOfCombinableReadsNumbers[k].isEmpty != true
{
combinableSet = arrayOfCombinableReadsNumbers[k]
oldCombinableSet = Set<Int>()
repeat
{
for i in 0..<arrayOfCombinableReadsNumbers.count
{
oldCombinableSet = combinableSet
if arrayOfCombinableReadsNumbers[i].isEmpty != true
{
if combinableSet != arrayOfCombinableReadsNumbers[i] && combinableSet.intersection(arrayOfCombinableReadsNumbers[i]).isEmpty != true
{
combinableSet = combinableSet.union(arrayOfCombinableReadsNumbers[i])
arrayOfCombinableReadsNumbers[k] = combinableSet
arrayOfCombinableReadsNumbers[i] = Set<Int>()
break
}
}
}
}while oldCombinableSet != combinableSet
}
}
var arrayOfSetsToCombine = arrayOfCombinableReadsNumbers.filter {$0.isEmpty != true}