사이클이 없는 방향 그래프에서 노드 순서를 찾는 알고리즘이다. 시간 복잡도는 O(V + E)다. 항상 유일한 값으로 정렬되지 않는다. 진입 차수 자기 자신을 가리키는 엣지의 개수를 말한다. 주어진 그래프를 인접 리스트로 구현하면서 동시에 진입 차수 배열을 초기화한다. 정렬 과정 진입 차수 배열에서 진입 차수가 0인 노드를 선택하고, 선택한 노드를 위상 정렬 배열에 저장한다. 인접 리스트에서 선택한 노드와 연결된 노드들의 진입 차수를 1씩 감소시킨다. 위 과정을 반복한다. 이미 선택한 노드는 선택하지 않는다. 위상 정렬 배열의 길이가 노드 개수와 같다면 정렬이 끝난 것이다.