728x90
반응형
📍 삽입 정렬:
- 앞에서부터 순서대로 보면서, 앞에 있는 모든 원소가 정렬되어 있다는 가정 하에서 현재 원소의 위치를 적절하게 집어넣는 정렬
- 시간복잡도: O(N^2)
- n 개의 원소에 대해 값 삽입을 수행하는데, 2번째 원소의 경우에는 최대 1개의 원소를 이동해야 하고, 3번째 원소의 경우에는 최대 2개의 원소를 이동해야 하며, n번째 원소까지 삽입하는 경우에는 최대 n-1개의 원소가 이동해야 함
💬 python 코드
- n 개의 원소가 주어졌을 때, 삽입 정렬을 이용해 n 개의 숫자를 오름차순으로 정렬
n = int(input())
arr = list(map(int, input().split()))
for i in range(1, n):
key = arr[i]
j = i-1
while j >= 0 and arr[j] > key: # i 값보다 이전 idx 값이 더 크면
arr[j+1] = arr[j] # 한 칸 밀고 (큰 값을 뒤로 보냄)
j -= 1
arr[j+1] = key # 멈춘 위치에 key 입력
print(*arr)
728x90
'자료구조 및 알고리즘 > 자료구조 및 알고리즘' 카테고리의 다른 글
정렬 - 5) 병합 정렬 (merge sort) (0) | 2024.04.08 |
---|---|
정렬 - 4) 기수 정렬 (radix sort) (0) | 2024.04.08 |
정렬 - 2) 선택 정렬 (selection sort) (0) | 2024.04.08 |
정렬 - 1) 버블 정렬 (bubble sort) (0) | 2024.04.08 |
Brute Force(완전 탐색) (0) | 2023.07.24 |