Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Algorithm] 삽입 정렬 #194

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

[Algorithm] 삽입 정렬 #194

wants to merge 1 commit into from

Conversation

jaminleee
Copy link
Collaborator

Summary

Check List

  • I created file and check spell again
  • I linked File to README.md

Comment on lines +114 to +130
- 알고리즘이 단순하다.

- 대부분의 원소가 이미 정렬되어 있는 경우, 매우 효율적일 수 있다.

- 정렬하고자 하는 배열 안에서 교환하는 방식이므로, 다른 메모리 공간을 필요로 하지 않는다. => 제자리 정렬(in-place sorting)

- 안정 정렬(Stable Sort) 이다.

- 선택정렬과 같은 O(n^2) 알고리즘에 비교해서 상대적으로 빠르다.

### **단점**

- 최악, 평균일때 시간복잡도가 O(n^2)으로, 비효율적이다.

- 길이가 길어질수록 비효율적이다.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### **장점**
- 알고리즘이 단순하다.
- 대부분의 원소가 이미 정렬되어 있는 경우, 매우 효율적일 수 있다.
- 정렬하고자 하는 배열 안에서 교환하는 방식이므로, 다른 메모리 공간을 필요로 하지 않는다. => 제자리 정렬(in-place sorting)
- 안정 정렬(Stable Sort) 이다.
- 선택정렬과 같은 O(n^2) 알고리즘에 비교해서 상대적으로 빠르다.
### **단점**
- 최악, 평균일때 시간복잡도가 O(n^2)으로, 비효율적이다.
- 길이가 길어질수록 비효율적이다.
### **장점**
- 알고리즘이 단순하다.
- 대부분의 원소가 이미 정렬되어 있는 경우, 매우 효율적일 수 있다.
- 정렬하고자 하는 배열 안에서 교환하는 방식이므로, 다른 메모리 공간을 필요로 하지 않는다. => 제자리 정렬(in-place sorting)
- 안정 정렬(Stable Sort) 이다.
- 선택정렬과 같은 O(n^2) 알고리즘에 비교해서 상대적으로 빠르다.
### **단점**
- 최악, 평균일때 시간복잡도가 O(n^2)으로, 비효율적이다.
- 길이가 길어질수록 비효율적이다.


```
### **시간 복잡도**
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아래 내용 가독성이 🥲

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

불필요한 단어나 줄 정리가 조금 필요할 것 같아요

@da-in
Copy link
Owner

da-in commented Nov 8, 2023

시간복잡도 등의 내용을 위로 올리고, 구현 코드는 문서 맨 마지막에 오는 게 좋을 것 같습니다.🤔

Copy link
Owner

@da-in da-in left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

### **시간 복잡도**

**최악** 의 경우(역으로 정렬되어 있을 경우) 선택정렬과 마찬가지로, (n-1) + (n-2) + .... + 2 + 1 => n(n-1)/2 즉, O(n^2) 이다.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**최악** 의 경우(역으로 정렬되어 있을 경우) 선택정렬과 마찬가지로, (n-1) + (n-2) + .... + 2 + 1 => n(n-1)/2 즉, O(n^2) 이다.
**최악** 의 경우(역으로 정렬되어 있을 경우) 선택정렬과 마찬가지로, (n-1) + (n-2) + .... + 2 + 1 => n(n-1)/2 이 소요된다. 즉, O(n^2) 이다.

또한, 이미 정렬되어 있는 배열에 자료를 하나씩 삽입/제거하는 경우에는, 현실적으로 최고의 정렬 알고리즘이 되는데, 탐색을 제외한 오버헤드가 매우 적기 때문이다.

최선의 경우는 **O(n)** 의 시간복잡도를 갖고, 평균과 최악의 경우 **O(n^2)** 의 시간복잡도를 갖게 된다.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
최선의 경우는 **O(n)**시간복잡도를 갖고, 평균과 최악의 경우 **O(n^2)** 의 시간복잡도를 갖게 된다.
정리해보면 최선의 경우는 **O(n)**시간복잡도, 평균과 최악의 경우 **O(n^2)** 의 시간복잡도를 갖게 된다.


```
### **시간 복잡도**
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

불필요한 단어나 줄 정리가 조금 필요할 것 같아요

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants