파이썬, 버블 정렬, 선택 정렬, 삽입 정렬 예제
구현한 파이썬 코드 예제는 다음과 같습니다.
# Bubble Sort : O(n^2)
def bubbleSort(arr, size):
for i in range(size-1):
for j in range(size-1-i):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
# Selection Sort : O(n^2)
# 최소 위치를 찾고 왼쪽으로 순서대로 보냄
def selectionSort(arr, size):
for i in range(size):
mPos = i # 최소 지점 초기화 (현재 i)
for j in range(i+1, size): # 비교 대상은 오른쪽
if arr[j] < arr[mPos]: # 최소 지점보더 더 작으면 위치 변경
mPos = j
arr[i], arr[mPos] = arr[mPos], arr[i] # 최소 위치와 i번째 값 교환
return arr
# Insertion Sort : O(n^2)
# 자신 왼쪽으로 계속 비교하고,
# 왼쪽이 크면 교환 작업 계속하고, 자신보다 작으면 중단
def insertionSort(arr, size):
for i in range(1, size): # 두 번째부터 시작
j = i-1
while j >= 0: # 왼쪽 방향으로 비교
if arr[i] > arr[j]: # 왼쪽이 작으면 종료
break
if arr[j] > arr[i]: # 왼쪽이 크면 교환
arr[j], arr[i] = arr[i], arr[j]
i = j # 기준값 i를 이동한 곳으로 변경
j -= 1 # 다음 j 위치로 이동
return arr
data = [6, 4, 3, 2, 1, 7, 8, 9, 0]
print( bubbleSort(data.copy(), len(data)) )
print( selectionSort(data.copy(), len(data)) )
print( insertionSort(data.copy(), len(data)) )
<이상>
'Python 기초' 카테고리의 다른 글
파이썬 스택, 큐 예제 (0) | 2020.08.16 |
---|---|
파이썬, 거듭제곱 재귀호출 함수 예제 (0) | 2020.08.10 |
파이썬, 하노이 탑(hanoi tower) 재귀호출 및 반복문 (0) | 2020.08.07 |
파이썬, 조합과 순열 구하기 (백트래킹) (0) | 2020.07.07 |
파이썬, 유효한 괄호쌍 출력하기 (백트래킹) (0) | 2020.07.06 |