# TopologicalSort

### Related Doc: package data

#### object TopologicalSort

Topological sorting is used to define the order of execution of dependent specifications when they form an acyclic graph

Linear Supertypes
AnyRef, Any
Ordering
1. Alphabetic
2. By Inheritance
Inherited
1. TopologicalSort
2. AnyRef
3. Any
1. Hide All
2. Show All
Visibility
1. Public
2. All

### Value Members

1. #### final def !=(arg0: Any): Boolean

Definition Classes
AnyRef → Any
2. #### final def ##(): Int

Definition Classes
AnyRef → Any
3. #### final def ==(arg0: Any): Boolean

Definition Classes
AnyRef → Any
4. #### final def asInstanceOf[T0]: T0

Definition Classes
Any
5. #### def clone(): AnyRef

Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws( ... )
6. #### final def eq(arg0: AnyRef): Boolean

Definition Classes
AnyRef
7. #### def equals(arg0: Any): Boolean

Definition Classes
AnyRef → Any
8. #### def finalize(): Unit

Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws( classOf[java.lang.Throwable] )
9. #### final def getClass(): Class[_]

Definition Classes
AnyRef → Any
10. #### def hashCode(): Int

Definition Classes
AnyRef → Any
11. #### final def isInstanceOf[T0]: Boolean

Definition Classes
Any
12. #### final def ne(arg0: AnyRef): Boolean

Definition Classes
AnyRef
13. #### final def notify(): Unit

Definition Classes
AnyRef
14. #### final def notifyAll(): Unit

Definition Classes
AnyRef
15. #### def sort[T](elements: Seq[T], dependsOn: (T, T) ⇒ Boolean): Option[Vector[T]]

sort elements topologically so that element at position i doesn't depend on element at position j if i < j dependsOn(e1, e2) returns true if e1 depends on e2 returns None if there is a cycle

sort elements topologically so that element at position i doesn't depend on element at position j if i < j dependsOn(e1, e2) returns true if e1 depends on e2 returns None if there is a cycle

Here's the algorithm from Wikipedia

L ← Empty list that will contain the sorted nodes while there are unmarked nodes do select an unmarked node n visit(n) function visit(node n) if n has a temporary mark then stop (not a DAG) if n is not marked (i.e. has not been visited yet) then mark n temporarily for each node m with an edge from n to m do visit(m) mark n permanently add n to head of L

16. #### final def synchronized[T0](arg0: ⇒ T0): T0

Definition Classes
AnyRef
17. #### def toString(): String

Definition Classes
AnyRef → Any
18. #### final def wait(): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )
19. #### final def wait(arg0: Long, arg1: Int): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )
20. #### final def wait(arg0: Long): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )