From cb1f70c7ebeb19d091fc65e1f64f46d147e85297 Mon Sep 17 00:00:00 2001 From: beurmuz Date: Tue, 10 May 2022 12:02:46 +0900 Subject: [PATCH] =?UTF-8?q?#7=2022.05.10=20>=20=EC=82=BD=EC=9E=85=EC=A0=95?= =?UTF-8?q?=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/inf/sort,greedy/4.js | 22 +++++++++++++++++----- src/inf/sort,greedy/README.md | 2 +- theory/sort.md | 19 ++++++++++++++++++- 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/src/inf/sort,greedy/4.js b/src/inf/sort,greedy/4.js index 6ee3ccee..02971d9f 100644 --- a/src/inf/sort,greedy/4.js +++ b/src/inf/sort,greedy/4.js @@ -2,15 +2,27 @@ function solution(arr){ let answer=arr; - for(let j = 0; j < answer.length; j++) { - for(let i = 0; i < answer.length; i++) { - if(answer[i] > answer[i+1]) { - [answer[i], answer[i+1]] = [answer[i+1], answer[i]]; + for(let i = 0; i < arr.length; i++) { + let tmp = arr[i], j; + for(j = i-1; j >= 0; j--) { + if(arr[j] > tmp) { + arr[j+1] = arr[j]; + } else { + break; } } + arr[j+1] = tmp; + console.log(answer); } return answer; } let arr=[11, 7, 5, 6, 10, 9]; -console.log(solution(arr)); \ No newline at end of file +console.log(solution(arr)); + +/* + - i는 1부터 arr.length까지 반복 + - tmp 배열에 arr[i]를 임시로 저장해놓고, j는 i-1부터 0까지 반복함 + - j는 i의 앞을 도는 것 +*/ + diff --git a/src/inf/sort,greedy/README.md b/src/inf/sort,greedy/README.md index 3d6ce4f2..5ef98479 100644 --- a/src/inf/sort,greedy/README.md +++ b/src/inf/sort,greedy/README.md @@ -10,7 +10,7 @@ |1|O|O| |2|O|추후에 다시풀기| |3|O|다시 풀기| -|4|O|| +|4|X|와 어려움| |5||| |6|△|| |7|X|예정| diff --git a/theory/sort.md b/theory/sort.md index 790aabbd..94eec06b 100644 --- a/theory/sort.md +++ b/theory/sort.md @@ -48,7 +48,24 @@ - n-1, n-2, n-3, ..., 2, 1번 = n(n-1)/2 - T(n) = O(n^2) -## 3. 삽입 정렬 +## 3. 삽입 정렬 (Insertion sort) +- 새로운 카드를 정렬된 카드 사이의 올바른 위치를 찾아 삽입 +- 새로 삽입될 카드의 수만큼 반복하면 됨 + +### 특징 +- 장점 + - 안정적인 정렬방법 + - 알고리즘이 매우 단순하므로 레코드가 적은 경우 유리함 + - 레코드가 대부분 정렬되어 있는 경우 매우 효율적 +- 단점 + - 비교적 많은 레코드들의 이동을 포함함 + - 레코드 수가 많고 레코드가 큰 경우 적합하지않음 + +### 시간복잡도 +- 최선 + - O(n) +- 최악 + - O(n^2) ## 4. 셸 정렬