토너먼트 트리라는 알고리즘
배열이 이렇게 있으면 [ 9 2 4 6 3 1 5 ]
전부 단말노드로 만들만큼 트리 확보해서 집어넣고
큰놈이 부모노드로 올라감
[9]
[9] [5]
[9] [6] [3] [5]
[9] [2] [4] [6] [3] [1] [5] [0]
이게 토너먼트 처음 진행된 트리
당연히 O(n)시간 ( 인덱스 끝에서부터 -2씩 감소 시키면서 비교 )
그다음 단말노드에서 제일 큰 노드를 0으로 바꾸고
다음 토너먼트 진행함
[6]
[6] [5]
[2] [6] [3] [5]
[0] [2] [4] [6] [3] [1] [5] [0]
이것도 위에처럼 진행할 수 잇는데 ( -2씩 감소시키면서 비교 )
수정할부분은 사실 저거밖에없잖아
그럼 O(lgN) 으로 만들수 잇고
나는 레벨1에서 최댓값 인덱스 찾을때까지 내려가려고 생각하고잇는대
더빠르게할수잇나
댓글 0