2016-11-04 11 views
1

Partially sorting collections in Scala은 Scala에서 PartialOrdering을 사용하여 정렬하는 방법을 묻습니다. 주석은 주어진 예제에서 저자가 부분적으로 정렬해서는 안된다는 것을 의미합니다. I do은 부분적인 주문으로 정렬해야합니다. 다른 나라의 영토가 될 수있는 국가가 있으며 이로 인해 부분적인 주문이 유도됩니다.스칼라에서 부분 순서로 정렬

따라서 : List[T]을 입력하십시오. 여기에서 TPartialOrdering[T]으로 확장됩니다. 부분 정렬에 따라 정렬 할 수있는 적절한 방법이 있습니까?

+0

최종 목록은 어떻게 작성해야합니까? – pamu

+0

초기 목록과 최종 목록의 몇 가지 예를들 수 있습니까? – pamu

+1

도움이 되나요? http://stackoverflow.com/questions/4620100/partial-order-sorting – wks

답변

0

나는 적절한 정렬을 직접 작성했습니다. 이런 경우 항상 표준 라이브러리 기능을 놓친 것 같아요.

def sortByPartialOrdering[T](ts: Array[T], lessThan: (T, T) => Boolean): ListBuffer[T] = { 
    val len = ts.size 
    val visited = Array.fill[Boolean](len)(false) 
    val postOrder = ListBuffer.empty[Int] 

    def visit(n: Int): Unit = { 
     visited(n) = true 
     for (i <- 0 until len) 
     if (!visited(i) && lessThan(ts(i), ts(n))) 
      visit(i) 
     postOrder += n 
    } 

    for (i <- 0 until len) 
     if (!visited(i)) 
     visit(i) 

    assert(postOrder.size == len) 

    postOrder map ts 
    } 

의견을 보내 주셔서 감사합니다. 스칼라를 많이 쓰지는 않겠습니다.