У меня вопрос в классе алгоритмов, и я не могу его решить. В вопросе говорится, что Theres является алгоритмом сортировки с O(nlogn)
, а поиск выполняется путем поиска двоичного поиска O(log n)
. Два набора дают P
& Q
, и я должен разработать алгоритм для определения того, являются ли два набора непересекающимися.Disjoint set using Search and Sorting
ответ
O(N)
решение (при условии, что два набора сортируются):
- слияния двух отсортированных наборов информации как элемент принадлежит к которому устанавливается
- траверс через список слияния, если вы найти два равных элемента из двух наборов, чем непересекающиеся, если они достигают до конца, чем disjoint
например. не
a= 1, 4, 6
b= 2, 4, 7
слилась набор =
элементы:1 2 4 4 6 7
установить нет (а/б):1 2 1 2 1 2
Теперь мы ясно видим, что две четверки являются последовательными и оба из двух разных наборов, следовательно, не пересекаются.
EDIT:
Если ваша потребность найти множество не пересекается или не чем простое слияние даст вам это. Как только вы обнаружите, что оба элемента в наборах равны, чем просто возврат, говорящий не дизъюнктным другим, если они могут достигать до конца как непересекающихся.
Вопрос, связанный с контейнером. Ниже, что:
class Element{
int i;
int setInfo
}
Теперь объявить массив как: Element[] e=new Element[X];
Надежда я ясно.
Два набора будут непересекающимися, только если между этими двумя наборами нет общего элемента. Я предполагаю, что оба эти набора имеют по n элементов. Этот алгоритм проверяет общий элемент в nlog (n) времени. Если общий элемент не найден, это означает, что оба набора не пересекаются.
For each element in set "P" search whether that number exist in set "Q".
Time complexity - n*log(n)
Log(n) to search in set Q and this search will be done "n" times.
Просто убедитесь, что сначала отсортированы наборы (другая операция O (n log n)), поэтому поиск может выполняться в O (n) времени. –
Если оба списка отсортированы перед поиском, сложность времени будет равна O (nlogn) + O (nlogn) + O (nlogn) = O (nlogn) [2 сортировка и один поиск.] Справа? @TedHopp - как выполнить поиск в O (n), поскольку бинарный поиск будет принимать O (logn), и если мы будем использовать линейный поиск, чем O (n), но так как его внутри другого цикла будет O (n^2) , –
@Ted, не могли бы вы объяснить, как поиск общего элемента в двух отсортированных массивах займет всего n раз? – nitinsh99
- 1. Boost disjoint set
- 2. Disjoint Set особым образом?
- 3. Disjoint set как связанный список
- 4. GAE Search API sorting
- 5. Hibernate Search sorting
- 6. Gridview sorting and updatepanel
- 7. sorting array and objetct
- 8. jTable and Sorting
- 9. SQL Sorting using Order by
- 10. Disjoint Set Forest для планирования заданий
- 11. Disjoint Set Реализация ADT в C++
- 12. sorting xml file using linq
- 13. set weird sorting behavior (python)
- 14. SQL Sorting Strings and Numbers
- 15. Datatables and Using Filters
- 16. SQL Search and Replace
- 17. regex search using string
- 18. Linear Search using python
- 19. Capybara set host and port using non-rails application
- 20. Primefaces Complex Datatable Filtering and Sorting
- 21. JQuery Disjoint
- 22. VBS RegEx Search and Repalce
- 23. jquery and php search
- 24. Solr and facet search
- 25. XCode Search and Destory
- 26. Python Search and Scrape
- 27. zend pagination and search
- 28. set <string> sorting like numbers
- 29. JQuery Drag and Drop Search
- 30. Disjoint Set Операция Find_Set (х) с использованием связанного списка
Предполагая, что два набора отсортированы, вы правы. Чтобы сделать ваше решение, можно изменить алгоритм слияния и вместо слияния проверить только два элемента. – iampat
@ Попытайтесь, можете ли вы дать практический подход для хранения информации о заданном числе, я имею в виду предоставление массива int, какой контейнер вы будете использовать? – nitinsh99
@ nitinsh99 отредактировал ответ. – Trying