우선순위 큐를 활용한 정렬 알고리즘


정렬되지 않은 데이터들을 우선순위 큐에 입력하고


출력되는 순서대로 나열하며 정렬 종료


우선순위 큐 & 힙(클릭)





내림차순 정렬을 위해선 최대 힙을 사용






내림차순 정렬을 위해선 최소 힙을 사용






'알고리즘 > 정렬 알고리즘' 카테고리의 다른 글

병합 정렬(Merge Sort)  (0) 2017.02.03
기수 정렬(Radix Sort)  (0) 2017.02.02
퀵 정렬(Quick Sort)  (0) 2017.02.01
셸 정렬(Shell Sort)  (1) 2017.01.25
버블 정렬(Bubble Sort)  (0) 2017.01.25























'알고리즘 > 정렬 알고리즘' 카테고리의 다른 글

힙 정렬(Heap Sort)  (1) 2017.02.04
기수 정렬(Radix Sort)  (0) 2017.02.02
퀵 정렬(Quick Sort)  (0) 2017.02.01
셸 정렬(Shell Sort)  (1) 2017.01.25
버블 정렬(Bubble Sort)  (0) 2017.01.25



























'알고리즘 > 정렬 알고리즘' 카테고리의 다른 글

힙 정렬(Heap Sort)  (1) 2017.02.04
병합 정렬(Merge Sort)  (0) 2017.02.03
퀵 정렬(Quick Sort)  (0) 2017.02.01
셸 정렬(Shell Sort)  (1) 2017.01.25
버블 정렬(Bubble Sort)  (0) 2017.01.25






  • 퀵 정렬


리스트의 데이터 중 기준이 되는 하나의 데이터를 선정 => 기준(Pivot)

기준(Pivot)을 선택하는 방법은 많지만, 아래의 설명과 코드에선 중간에 있는 데이터를 기준(Pivot)으로 선정


기준(Pivot)보다 작은 데이터들을 왼쪽, 큰 데이터들을 오른쪽으로 정렬


정렬 완료 후 기준(Pivot)을 기점으로 좌우로 분할하여
다시 정렬


분할된 그룹의 크기가 1이하가 될때까지 반복







































'알고리즘 > 정렬 알고리즘' 카테고리의 다른 글

병합 정렬(Merge Sort)  (0) 2017.02.03
기수 정렬(Radix Sort)  (0) 2017.02.02
셸 정렬(Shell Sort)  (1) 2017.01.25
버블 정렬(Bubble Sort)  (0) 2017.01.25
삽입 정렬(Insertion Sort)  (0) 2017.01.25





  • 셸 정렬


삽입 정렬의 장점을 활용하는 정렬 알고리즘

(삽입 정렬은 어느정도 정렬된 배열에서 최적의 성능을 냄)


데이더들을 일정 간격으로 그룹화 하고, 각 그룹에서 같은 자리의 데이터 끼리 삽입정렬(ex.각 그룹의 첫번째 자리 끼리)


그룹의 간격을 점점 줄여나감


최종적으론 어느정도 정렬된 상태에서 삽입 정렬을 하게됨















'알고리즘 > 정렬 알고리즘' 카테고리의 다른 글

기수 정렬(Radix Sort)  (0) 2017.02.02
퀵 정렬(Quick Sort)  (0) 2017.02.01
버블 정렬(Bubble Sort)  (0) 2017.01.25
삽입 정렬(Insertion Sort)  (0) 2017.01.25
선택 정렬(Selection Sort)  (0) 2017.01.25





  • 버블 정렬(오른차순 기준)


인접한 두 데이터를 비교 => 뒤의 데이터가 더 작으면 자리 변경


구현이 가장 간단하고, 코드가 매우 직관적이다.


성능은 매우 비효율적인 정렬







첫번째 사이클 종료


한 사이클이 완료되면, 가장 큰 데이터가 가장 뒤에 위치하게 된다.



데이터의 수 만큼 사이클 반복 수행




'알고리즘 > 정렬 알고리즘' 카테고리의 다른 글

기수 정렬(Radix Sort)  (0) 2017.02.02
퀵 정렬(Quick Sort)  (0) 2017.02.01
셸 정렬(Shell Sort)  (1) 2017.01.25
삽입 정렬(Insertion Sort)  (0) 2017.01.25
선택 정렬(Selection Sort)  (0) 2017.01.25



  • 삽입 정렬(오름차순 기준)




-어느정도 정렬 되어 있는 상태에서 좋은 효율을 보여주는 정렬


-자신의 데이터와 앞자리 데이터를 비교해, 자신이 더 작으면 자리변경(앞자리 > 자신)


-자기보다 작은 데이터가 나오면 반복 종료


-다음 사이클로 넘어갈때, 한칸씩 뒤에 있는 데이터 부터 시작






















이런 방식으로 마지막 자리 까지, 계속 반복







'알고리즘 > 정렬 알고리즘' 카테고리의 다른 글

기수 정렬(Radix Sort)  (0) 2017.02.02
퀵 정렬(Quick Sort)  (0) 2017.02.01
셸 정렬(Shell Sort)  (1) 2017.01.25
버블 정렬(Bubble Sort)  (0) 2017.01.25
선택 정렬(Selection Sort)  (0) 2017.01.25




  • 선택 정렬(오름차순 기준)


-적절한 데이터를 찾아 변경하는 정렬


-자리 변경 횟수가 적은게 장점


01. 데이터 중 가장 작은 데이터를 찾는다.


02. 가장 작은 데이터와 첫번째 자리 데이터의 자리를 바꾼다.


03. 두번째 자리와 두번째 작은 데이터 변경(반복)

.

.

.


  • 그림으로 보기











'알고리즘 > 정렬 알고리즘' 카테고리의 다른 글

기수 정렬(Radix Sort)  (0) 2017.02.02
퀵 정렬(Quick Sort)  (0) 2017.02.01
셸 정렬(Shell Sort)  (1) 2017.01.25
버블 정렬(Bubble Sort)  (0) 2017.01.25
삽입 정렬(Insertion Sort)  (0) 2017.01.25

+ Recent posts