티스토리 뷰
알고리즘 공부 몰아서 하지 말고
매일마다 뇌를 자극하도록 하는 차원에서 시작하는.
삽입 정렬
말로 표현 (오름차순인 경우)
"i번 선수는 자신의 왼쪽만 보고, 자신이 가장 크면 가만히 있는다. 자신이 가장 크지 않다면 자신이 있어야 할 자리로 이동하게 된다. 이때 i번 선수가 자신의 자리를 찾아간다기 보다는 다른 선수들이 한 칸씩 이동하면서 최종적으로 생기는 자리에 들어가기만 하면 된다"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include <iostream> // 190313 sort_insertion using namespace std; class Sort { public : static void insert(int* src, int count) { int temp; int j; for (int i = 1; i < count; i++) { temp = src[i]; // 일단 임시 장소로 이동시키고 src[i]를 비워두는 느낌. // src[i]가 빈자리라고 생각할 수 있습니다. j = i; while (j > 0 && src[j - 1] > temp ) { // while 처음 시작하면 빈자리의 바로 앞부터 확인해보는 것입니다. // 조건문에서 j > 0이 src[j-1] > temp보다 앞에 있어야 한다. // array outofrange(-1) error 발생가능하기 때문 src[j] = src[j - 1]; j--; // while문을 돌면서 한 칸씩 앞으로 이동하며 크기 검사를 하겠죠. } src[j] = temp; // 빈자리에 삽입 } printArray(src, count); } static void printArray(int *src, int count) { for (int i = 0; i < count; i++) { cout << src[i] << " "; } cout << endl; } }; int main() { int src[] = { 3, 4, 7, 9, 2, 1, 10, 300, 200, 90 }; Sort::insert(src, sizeof(src)/sizeof(int)); } | cs |
'Programming > Algorithm' 카테고리의 다른 글
[Algorithm] programmers/kakao/2018summer/level3/숫자 게임 (0) | 2019.11.05 |
---|---|
[Algorithm] programmers/kakao/2018winter/level4/쿠키 구입 (0) | 2019.11.05 |
[Algorithm] Baekjoon/DP/1463/1로 만들기 (0) | 2019.08.30 |
[Algorithm][3] 선택 정렬(Selection sort) (0) | 2019.03.21 |
[Algorithm][1] 두 개의 큐로 스택 표현(Implement stack using two queues) (0) | 2019.03.12 |
댓글