728x90
삽입 정렬
파이썬 구현
for i in range(1, len(array)):
for j in range(i, 0, -1):
if array[j] < array[j-1]:
array[j], array[j-1] = array[j-1], array[j]
else:
break
더보기
삽입 정렬이랑 버블 정렬이랑 코드가 비슷한듯
#버블 정렬 코드
for i in range(N-1, 0, -1):
flag = True #swap이 발생했는지 확인
for j in range(i):
if A[j] > A[j+1]:
A[j], A[j+1] = A[j+1], A[j]
flag = False
if flag: #swap이 한 번도 발생하지 않았으므로 종료
break
버블 정렬은 정렬되지 않은 영역에서 계속 swap이 발생하는거고,
삽입 정렬은 정렬되지 않은 영역에서 하나를 뽑아서 정렬된 영역으로 삽입하는 거라 swap이 더 적게 발생한다.
퀵 정렬
파이썬 구현
def quick_sort(arr, start, end):
if start >= end: return # 원소가 1개인 경우
pivot = start
i, j = start + 1, end
while i <= j:
while i <= end and arr[i] <= arr[pivot]:
i += 1
while j > start and arr[j] >= arr[pivot]:
j -= 1
if i > j: # 엇갈린 경우
arr[j], arr[pivot] = arr[pivot], arr[j]
else: # 엇갈리지 않은 경우
arr[j], arr[i] = arr[i], arr[j]
quick_sort(arr, start, j - 1)
quick_sort(arr, j + 1, end)
반응형
'알고리즘 > Do it! 알고리즘 코딩테스트 (파이썬)' 카테고리의 다른 글
[9일차] 05 탐색 : 05-3 이진 탐색 (1) | 2024.04.01 |
---|---|
[8일차] 05 탐색 : 05-1 깊이 우선 탐색, 05-2 넓이 우선 탐색 (0) | 2024.04.01 |
[7일차] 04 정렬 : 04-5 병합 정렬, 04-6 기수 정렬 (1) | 2024.04.01 |
[5일차] 04 정렬 : 04-1 버블 정렬, 04-2 선택 정렬 (0) | 2024.03.24 |
[4일차] 03 자료구조 : 03-5 스택과 큐 (0) | 2024.03.19 |