 
  
   
  
   
  
   
  
   
  
   
  
  let one = ['one', 'two', 'three', 'four', 'five'];
let two = ['a', 'b', 'five', 'c', 'one'];
let tmp = [...one, ...two]  // эта часть так же имеет сложность, но от нее можно избавиться
   .reduce((a,v)=>{a[v]?a[v]++:a[v]=1; return a},{}); // O(n1+n2)
let res =   Object.keys(tmp)
   .filter(k=>tmp[k]-1); // в минимуме O(max(n1,n2)) в максимуме O(n1+n2) 
  
   
  
   
  
  мы тут на специализированом ресурсе
Не надо вкладывать в термины какой-то свой смысл
О терминах не спорят, о них договариваются
 
  
   
  
   
  
   
  
  большой файл бьётся на чанки, влезающие в память, например по 1гб, они сортируются и сохраняются в файлах.
Затем данные из этих файлов в один проход потоково сливаются с помощью heapq
 
  
   
  
  rm -Rf же?         
  
  