ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 우선 순위 큐 정렬(Priority Queue Sort)
    Algorithm/자료구조 2022. 6. 6. 17:24
    728x90

    우선 순위 큐는 엔트리의 집합을 저장한다.

    일반적으로, 엔트리는 (Key , Value)의 쌍으로 구성되며, key가 우선순위를 가르킨다.

    Priority Queue ADT

    Main Method

    -insert(e) : 엔트리 e 삽입

    -removeMin() : 가장 작은 키에 해당하는 엔트리 제거

    Additional Method

    -min() : 가장 작은 키에 해당하는 엔트리 리턴(삭제하지않음)

    -size() : 사이즈 리턴

    -empty() : 큐가 비었는지 판단

     

    우선 순위 큐 정렬 슈도 코드

    Algorithm PQ_Sort(S,C)
    	input sequence S, comparator C for the elements of S
        Output sequence S sorted in increasing order according to C
        P <- priority queue with comparator C
        while ㄱS.empty()
        	e<- S.front();  S.eraseFront()
            P.insert(e,∅)
        while ㄱP.empty()
        	e<- P.removeMin()
            S.insertBack(e)

    1. 연속된 삽입 작업을 통해 요소를 하나씩 삽입한다.

    2. 연속된 removeMin() 작업을 통해 정렬된 순서대로 요소를 제거한다.

     

    이 정렬 알고리즘의 실행 시간은 우선 순위 큐 구현에 따라 다르다.

     

    Sequenced-based Priority Queue

    1. 정렬되지 않은 리스트로 구현

    - insert는 시퀀스의 시작 또는 끝에 항목을 삽입할 수 있으므로 O(1) 시간이 걸린다.

    - removeMin()과 min()은 가장 작은 키를 찾기 위해 전체 시퀀스를 탐색해야 하므로 O(n) 시간이 걸린다.

     

    2. 정렬된 리스트로 구현

    - insert는 항목을 삽입할 장소를 찾아야 하기 때문에 O(n) 시간이 걸린다.

    - removeMin()과 min()은 가장 작은 키가 맨 처음 시작 위치에 존재하므로 O(1) 시간이 걸린다.

     

    Selection-Sort(선택 정렬)

    - 선택정렬은 우선순위 큐가 정렬되지 않은 시퀀스로 구현된 우선순위 큐 정렬의 변형 알고리즘이다.

    1. 우선 순위 큐에 n개의 항목을 삽입하므로 O(n) 시간이 걸린다.

    2. removeMin() 연산이 n개인 우선 순위 대기열에서 요소를 정렬된 순서대로 제거하는 데는 1+2+...n에 비례하는 시간이 걸린다.

    따라서, 선택 정렬의 실행시간은 O(n^2)이다.

    Insertion-Sort(삽입 정렬)

    - 삽입 정렬은 우선순위 큐가 정렬된 시퀀스로 구현된 우선순위 큐 정렬의 변형 알고리즘이다.

    1. 우선 순위 큐에 n개의 항목을 삽입하는 데는 n개에 비례한 시간이 걸린다.(1+2+...+n)

    2. 연속된 removeMin() 작업이 있는 우선 순위큐에서 정렬된 순서대로 요소를 제거하는 데는 O(n)시간이 걸린다.

    따라서, 삽입 정렬의 실행시간은 O(n^2)이다.

     

    In-Place Insertion-Sort(제자리 삽입 정렬)

    - 외부 데이터 구조를 사용하는 대신, 선택 정렬 및 삽입 정렬을 제자리에서 구현 할 수 있다.

    - 입력 시퀀스 자체의 일부가 우선 순위 큐 역할을 한다.

    - 시퀀스의 초기 부분을 계속 정렬한다.

    - 시퀀스를 수정하는 대신 swap을 사용할 수 있다.

    728x90
Designed by Tistory.