본문 바로가기

전체 글13

삽입 정렬(Insert Sort) 삽입 정렬(Insert Sort) 삽입 정렬은 정렬이 되어 있는 부분집합(Sorted)과 정렬이 되어 있지 않은 부분집합(Unsorted)으로 나누어 정렬이 되어 있는 부분집합에 새로운 원소의 위치를 찾아 '삽입'하여 정렬한다. 첫 번째 원소를 정렬 되어 있는 부분집합으로 시작하고, 정렬되지 않은 부분집합에서 원소를 정렬 되어 있는 부분집합 마지막 원소부터 비교하여 위치를 찾는다. ​ 평균 비교 횟수는 n(n-1)/4 이고 평균 시간 복잡도는 O(n^2)이다. ​ 예시) {57, 16, 41, 2, 50} 하나의 집합이지만 편의상 나눠서 설명. ​ 1. 첫 번째 원소를 정렬된 부분집합 S로 정하고 나머지 부분집합 U의 첫 번째 원소를 비교하여 위치를 찾아 삽입한다. S = {57} U = {16, 41,.. 2021. 4. 2.
퀵 정렬(Quick Sort) 퀵 정렬(Quick Sort) 기준값(일반적으로 전체 원소중 가운데 위치한 원소) 피봇(povot)을 중심으로 왼쪽 부분 집합과 오른쪽 부분 집합으로 분할하고 기준값보다 작은 원소들은 왼쪽 부분집합으로, 큰 원소들은 오른쪽 부분집합으로 정렬한다. 왼쪽 끝에서 오른쪽으로 이동하면서 피봇보다 크거나 같은 원소를 찾아 L이라 하고, 오른쪽 끝에서 왼쪽으로 이동하면서 피봇보다 작은 원소를 찾아 R이라 한 후 두 원소를 교환한다. L과 R이 만나면 피봇과 교환한 후 위치를 확정한다. 확정된 피봇의 위치를 기준으로 왼쪽, 오른쪽 부분집합에 대해서 퀵 정렬을 반복한다. 부분집합의 크기가 1 이하가 되면 종료한다. ​ 퀵 정렬은 버블 정렬과 같이 교환 방식의 정렬이지만 버블 정렬은 원소가 이동할 때 한칸씩 이동하는 반.. 2021. 4. 2.
버블 정렬(Bubble Sort) 버블 정렬(Bubble Sort) '인접'한 두개의 원소를 비교하여 자리를 교환하는 방식으로 정렬. 처음부터 마지막 원소까지 반복하면서 가장 큰 원소가 마지막으로 정렬된다. ​ 평균 비교 횟수와 평균 자리 교환 횟수는 n(n-1)/2 이다. 따라서 시간 복잡도는 O(n^2)가 된다. ​ 예시) {57, 16, 41, 2, 50, 6} ​ 1. 인접한 두 원소를 비교하여 자리를 교환하는 작업을 마지막 원소까지 반복하여 가장 큰 원소를 마지막 자리로 옮긴다. {57, 16, 41, 2, 50, 6} ===> {16, 57, 41, 2, 50, 6} ===> {16, 41, 57, 2, 50, 6} ===> {16, 41, 2, 57, 50, 6} ===> {16, 41, 2, 50, 57, 6} ===> {.. 2021. 4. 2.
선택 정렬(Selection Sort) 선택 정렬(Selection Sort) 기준 위치에 맞는 원소를 '선택'하여 자리를 교환하는 방식으로 정렬. ​ 전체 비교 횟수는 n개의 원소에 대해 n(n-1)/2 이고, 어떤 경우에서나 비교 횟수가 같기 때문에 시간 복잡도는 O(n^2)이다. ​ 예시) {57, 16, 41, 2, 50, 6} ​ 1. 첫 번째 자리를 기준 위치로 정한 후 가장 작은 원소를 선택하여 자리를 바꾼다. {57, 16, 41, 2, 50, 6} 기준 위치 가장 작은 원소 2 ====> {2, 16, 41, 57, 50, 6} ​ 2. 두 번째 자리를 기준 위치로 정한 후 가장 작은 원소를 선택하여 자리를 바꾼다. {2, 16, 41, 57, 50, 6} 기준 위치 가장 작은 원소 6 ====> {2, 6, 41, 57, 5.. 2021. 4. 2.