much faster using by using QuickSelect and O(n) InterSection