3. 1. Insertion Sort – 삽입 정렬
레코드를 이미 정렬된 배열의 적절한 위치에 “삽입”
3 / 141. Insertion Sort
x
1) 배열 S
: i번째 슬롯에 있는 키 값을 x라고 가정합니다.
S[j] S[j+1] S[j+2] ………………………… S[i-2] S[i-1] S[i]
2) (i-1)번째, (i-2)번째 슬롯에서 부터 차례로
x보다 작은 키를 찾을 때까지 비교를 반복합니다.
4. 1. Insertion Sort – 삽입 정렬
4 / 141. Insertion Sort
x
1) S[j] : x보다 작은 키가 위치한 슬롯이라 가정합니
다.
S[j] S[j+1] S[j+2] ………………………… S[i-2] S[i-1] S[i]
2) (j+1) ~ (i-1)번째 슬롯에 있는 키들을
(j+2) ~ i번째 슬롯으로 옮깁니다.
x
S[j] S[j+1] S[j+2] ………………………… S[i-2] S[i-1] S[i]
6. 1. Insertion Sort in C
6 / 141. Insertion Sort
1. 정수를 입력받아
배열 array에 대입 → 출력
7. 1. Insertion Sort in C
7 / 141. Insertion Sort
2. For문
: 정렬할 범위 넓혀 나가기
- array의 처음부터 끝까지
(1 ~ n-1)
- 변수 d : insert position
3. While문 반복
: 새로운 요소의 위치 찾기
- Insert position이 0보다 클 때
- 삽입 위치를 찾지 못했을때까
지
- 앞으로 이동하면서 자신보다
더 큰 값이면 자리를 교체
* printf문은 이후 생략
9. 2. Bubble Sort in C
9 / 142. Bubble Sort
1. 정수를 입력받아
배열 array에 대입 → 출력
10. 2. Bubble Sort in C
10 / 142. Bubble Sort
2. array 배열의 첫번째 인덱스부터 바로 옆 오른쪽 인덱스와 크기를
비교
3. 비교 후 왼쪽의 요소가 클 경우 좌우 교환
11. 3. Selection Sort
정렬되지 않은 데이터들에서,
가장 작은 데이터를 찾아 가장 앞의 데이터와 교환하는 정렬
11 / 143. Selection Sort
12. 3. Selection Sort in C
1. 정수를 입력받아
배열 array에 대입 → 출력
12 / 143.Selection Sort
13. 3. Selection Sort in C
2. for문
c : array 배열의 첫번째 인덱스
부터
3. 중첩 for문
: 가장 작은 값이 들어있는 배열
의 인덱스 찾기 & position에 저
장
4.position과 c의 위치 교환
13 / 143.Selection Sort