티스토리 뷰
728x90
반응형

선택 정렬 : 가장 작은 데이터를 선택하여 맨 앞 부터 순서대로 정렬해 나가는 알고리즘
거품 정렬 : 오른쪽부터 인접한 두 개의 원소를 비교하여 자리를 교환하는 방식의 정렬 알고리즘
삽입 정렬 : 모든 요소를 앞에서 부터 정렬 범위를 확장시켜나가며 정렬을 진행하는 알고리즘
1. 선택 정렬(Selection Sort) 구현
'''
# 시간복잡도 (n^2)
'''
def selection_sort(lst):
for i in range(len(lst)-1):
# 최저점
min_idx = i
for j in range(i+1, len(lst)):
if lst[min_idx] > lst[j]:
min_idx = j
lst[i], lst[min_idx] = lst[min_idx], lst[i]
return lst
# 테스트
a = [4, 2, 7, 1, 9, 3]
print(selection_sort(a))
2. 거품 정렬(Bubble Sort) 구현
def bubble_sort(lst):
for i in range(len(lst)-1):
# 이미 정렬되어 있는지 체크하는 변수
isSort = True
# 한 턴이 끝나면 맨 뒤는 가장 큰 수가 정렬되어 있으므로,
# 정렬할 필요가 없어 -i를 해준다
for j in range(len(lst)-1-i):
# 오름차순 기준 (내림차순으로 하고 싶을 경우 부호 반대(<))
if lst[j] > lst[j+1]:
lst[j], lst[j+1] = lst[j+1], lst[j]
isSort = False
if isSort == True:
break
return lst
# 테스트
a = [4, 2, 7, 1, 9, 3]
print(bubble_sort(a))
3. 삽입 정렬(Insertion Sort) 구현
def insertion_sort(lst):
for i in range(len(lst)-1):
for j in range(i+1, 0, -1):
if lst[j] < lst[j-1]:
lst[j], lst[j-1] = lst[j-1], lst[j]
else:
break
return lst
# 테스트
a = [4, 2, 7, 1, 9, 3]
print(insertion_sort(a))
728x90
반응형
'[코드잇] > ㄴ알고리즘' 카테고리의 다른 글
[알고리즘] 문제4 - Brute Force (0) | 2021.06.14 |
---|---|
[알고리즘] 문제3 - 재귀 함수 (0) | 2021.06.14 |
[알고리즘] 정리 - 알고리즘 평가법 (0) | 2021.06.10 |
[알고리즘] 문제2 - 탐색 알고리즘 (0) | 2021.06.09 |
[알고리즘] 문제1 - 팔린드롬 문제 (0) | 2021.06.09 |
댓글
250x250
반응형
TAG
- 설치
- 재귀함수
- 문법
- 조합
- 프로그래머스문제
- 파이썬
- SWiFT
- 알고리즘
- 코딩테스트
- level1
- 월간 코드 챌린지 시즌1
- 백준
- 이진탐색
- 프로그래밍언어
- Summer/Winter Coding(~2018)
- 프로그래머스코딩테스트
- KAKAO
- x만큼간격이있는n개의숫자
- 코드잇
- GIT
- 유닉스커맨드
- 정렬
- 피보나치
- level2
- 월간 코드 챌린지 시즌2
- 컴퓨터개론
- 알고리즘문제
- 프로그래머스 프로그래머스문제
- 파이썬문법
- 프로그래머스
최근에 달린 댓글
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
링크
- Total
- Today
- Yesterday