2021 SISS 21기 활동/1학기 C
[HackerRank_C] Insertion Sort - Part 2
hyerang0125
2021. 3. 29. 11:00
자료구조 복습용 sorting 문제입니다.
- 문제
www.hackerrank.com/challenges/insertionsort2/problem
Insertion Sort - Part 2 | HackerRank
Code Insertion Sort itself.
www.hackerrank.com
첫번째 원소가 정렬되어있다 가정하고 두번째 원소부터 삽입 정렬을 반복 후, 올바른 위치에 삽입될 때마다 배열을 인쇄한다.
- 풀이
// Complete the insertionSort2 function below.
void insertionSort2(int n, int arr_count, int* arr) {
for (int i = 1; i < n; i++) {
int key = arr[i];
for (int j = i; j >= 0; j--) {
if (arr[j - 1] > key)
arr[j] = arr[j - 1];
else {
arr[j] = key;
for (int k = 0; k < arr_count; k++)
printf("%d ", arr[k]);
printf("\n");
break;
}
}
}
}
- 비교할 값( i = 1~n-1)을 key에 저장한다.
- j - 1번째 자리부터 0번째 자리까지 만약 왼쪽에 있는 값이 더 크다면 오른쪽으로 값을 밀어낸다.
- 만약 왼쪽에 있는 값이 더 작다면 j번째 자리에 key 값으르 저장하고 배열을 프린트한다. 삽입할 자리를 찾았으므로 j for문을 탈출한다.
- 실행결과
통과!