티스토리 뷰
삽입 정렬(Insertion Sort)
삽입 정렬(Insertion Sort) 란?
삽입 정렬(Insertion Sort)은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치에 삽입함으로써 정렬을 완성하는 알고리즘이다.
삽입 정렬은 처음 Key 값을 두 번째 요소부터 시작하게 되며 그 앞쪽 요소들과 비교하여 삽입할 위치를 지정한 후 요소를 뒤로 옮기고 지정한 자리에 자료를 삽입하여 정렬하는 알고리즘이다.
삽입 정렬(Insertion Sort) 시간 복잡도
▶ 최악의 경우(입력 자료가 역순일 경우)
T(n) = O(n^2)
▶ 최선의 경우(입력 자료가 정렬되어 있는 경우)
T(n) = O(n)
삽입 정렬(Insertion Sort) 알고리즘의 특징
1. 대부분의 레코드가 이미 정렬되어 있는 경우에 매우 효율적일 수 있다.
2. 알고리즘 자체가 간단하며 안정 정렬(Stable Sort) 이다.
3. 정렬하고자 하는 배열 안에서 교환하는 방식이므로, 다른 메모리 공간을 필요로 하지 않는다.
✔ 제자리 정렬(in-place sorting)
4. 평균과 최악의 시간 복잡도가 O(n^2)로 레코드 수가 많고 레코드 크기가 클 경우에 적합하지 않으며 역순으로 정렬되어 있는 배열의 경우 비효율적이게 된다.
삽입 정렬(Insertion Sort) 코드: Python
def insert_sort(x):
for i in range(1, len(x)):
j = i - 1
key = x[i]
while x[j] > key and j >= 0:
x[j+1] = x[j]
j = j - 1
x[j+1] = key
return x
'Study > CS' 카테고리의 다른 글
[알고리즘] 퀵 정렬(Quick Sort) (0) | 2022.08.07 |
---|---|
[데이터베이스] 레디스(Redis) (0) | 2022.07.31 |
[운영체제] 세마포어(Semaphore)와 뮤텍스(Mutex) (0) | 2022.07.23 |
[데이터베이스] 트랜잭션(Transaction) (0) | 2022.07.23 |
[운영체제] PCB 와 Context Switching (0) | 2022.07.17 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- CS
- 완전탐색
- It
- 네트워크
- 연결리스트활용
- CS.
- 스터디
- 보험
- 자료구조
- 이차 리스트
- 프로그래머스
- 코드업 기초
- 리스트2
- 운영체제
- 정렬
- https
- CS 스터디
- 프로그래머스강의
- Greedy sort
- 알고리즘
- 자바
- 자료구조와알고리즘 23강
- SW
- 이진탐색
- 파이썬
- 리스트 복사
- 리스트함축
- 리스트
- 데이터베이스
- 프로세스 주소공간
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함