🤖
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (3)
August 13, 2022
제 5장: 정렬과 검색(3)
52. 최소 값(최대 값)을 골라 이미 정렬된 마지막 요소와 교환하는 단순 선택 정렬
-
1~100 숫자가 적힌 카드를 오름차순으로 정렬할 때의 작업 순서
- 카드 중 가장 숫자가 작은 카드를 찾는다
- 1번의 카드를 오름차 순으로 나열하는 곳 왼쪽으로 옮긴다.
- 남은 카드 중 가장 숫자가 작은 카드를 찾는다
- 3번 카드를 오름차 순으로 정렬하는 카드의 끝에 둔다.
-
정렬할 데이터가 저장된 배열 DATA를 오름차순으로 정렬할 때의 순서
1단계; 정렬되지 않은 부분 안에서 최소 값을 찾는다
2단계: 최소값을 선택해 정렬되지 않은 부분의 1번째 요소와 교환한다(이 작업으로 최소 값을 정렬된 부분의 마지막 요소로 만든다)
3단계: 정렬되지 않은 부분의 시작 위치를 1칸 뒤로 옮긴다(이 작업으로 정렬되지 않은 부분의 범위를 하나씩 줄인다)
4단계: 정렬되지 않은 부분의 요소 수가 1일 될 때까지 1~3단계를 반복한다.
53. 이웃한 데이터들을 교환해 나가는 단순 교환 정렬(버블 정렬)
- 단순 교환 정렬: 이웃한 데이터들의 크고 작음을 따진 결과가 정렬 순서와 반대일 경우, 앞 뒤의 데이터들의 순서를 바꿔 데이터를 정렬하는 알고리즘
- 배열을 오름차 순으로 정렬하는 케이스
- 정렬되지 않은 부분(앞부분), 정렬된 부분(뒷부분)으로 나누고, 시작할 때에는 정렬된 부분이 비어있는 상태이며, 정렬되지 않은 부분이 전체를 차지한다.
- 1단계: 정렬되지 않은 부분의 1번째 데이터와 2번째 데이터를 비교한다.
- 2단계: 1번째 데이터 > 2번째 데이터라면 순서를 바꾼다.
- 3단계: 데이터를 비교하기 시작할 위치를 뒤로 1칸 옮긴다.
- 4단계: 정렬되지 않은 부분의 데이터가 2개만 남을때까지 위의 순서를 반복한다.