사실 파이썬에서는 sort, sorted를 지원하지만, 직접 구현해보자 이말입니다.
1. 선택정렬
- 인덱스 0번부터 비교시작
- 0번 뒤에 애들 중 가장 작은 값 찾기
- 있으면 0번이랑 자리 바꾸고, 없으면 넘어간다.
- 인덱스 1번~
시간복잡도는 O(n^2)
#1.선택알고리즘
arr1=[2,4,5,1,3]
def selection_sort(arr):
for i in range(len(arr)-1):
min_idx = i
for j in range(i+1, len(arr)):
if arr[j] < arr[min_idx]:
min_idx=j
arr[i],arr[min_idx]=arr[min_idx],arr[i]
selection_sort(arr1)
print(arr1)
2. 삽입정렬
- 삽입정렬은 1번 인덱스부터 시작한다. ( 0 아님)
- 1번과 0번을 비교. 1번이 더 작으면 자리 바꾼다.
- 2번 인덱스에서 시작.
- 2번과 1번 비교 후 2번이 작으면 자리 바꿈.
- 1번이 0번보다 작으면 자리 바꿈.
- 3번인덱스 -> 2와 비교, 1, 0 ,...
시간복잡도
- 이미 정렬되어 있으면 O(n)
- 정렬이 필요하면 O(n^2)
#2.삽입정렬
arr2=[3,5,1,2,4]
def insertion_sort(arr):
for end in range(1,len(arr)):
for i in range(end,0,-1):
if arr[i-1] > arr[i]:
arr[i-1],arr[i] = arr[i],arr[i-1]
insertion_sort(arr2)
print(arr2)
3. 버블정렬
- 1번 인덱스부터 시작
- 1번과 0번 비교 후 자리 바꿈
- 2번과 1번 비교 후 ,,,
- 3번과 2번 ,,,
- 4번과 3번,,,
- 이를 (전체 배열 크기 - 현재까지 순환한 바퀴수) 만큼 반복
시간복잡도는 O(n^2)
#3.버블정렬
arr3=[2,5,3,1,4]
def bubble_sort(arr):
for i in range(len(arr)-1,0,-1):
for j in range(i):
if arr[j] > arr[j+1]:
arr[j], arr[j+1]= arr[j+1], arr[j]
bubble_sort(arr3)
print(arr3)
'Python' 카테고리의 다른 글
[ Python ] SHDS_코테특강 (0) | 2024.10.14 |
---|---|
[ Python ] filter()함수 (0) | 2024.10.08 |
코테를 위한 파이썬 기초 - 계속 수정 중 (0) | 2024.09.30 |