-
정렬 알고리즘 - 계수 정렬Python/알고리즘 2022. 9. 8. 02:19
특정한 조건이 부합할 때만 사용할 수 있지만 매우 빠르게 동작하는 정렬 알고리즘
데이터의 크기 범위가 제한되어 정수 형태로 표현할 수 있을 때 사용
시간 복잡도는 O(N+K)
답안 예시
# 모든 원소의 값이 0보다 크거나 같다고 가정
array = [7, 5, 9, 0, 3, 1, 6, 2, 9, 1, 4, 8, 0, 5, 2]
#모든 범위를 포함하는 리스트 선언(모든 값인 0으로 초기화)
count = [0] * (max(array) + 1)
for i in range(len(array)):
count[array[i]] += 1 # 각 데이터에 해당하는 인덱스의 값 증가
for i in range(len(count)): # 리스트에 기록된 정렬 정보 확인
for j in range(count[i]):
print(i, end=' ') # 띄어쓰기를 구분으로 등장한 횟수만큼 인덱스 출력0 0 1 1 2 2 3 4 5 5 6 7 8 9 9
출처 : https://www.youtube.com/watch?v=KGyK-pNvWos&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=5
'Python > 알고리즘' 카테고리의 다른 글
이진 탐색 (1) 2022.09.09 정렬 알고리즘 기초 문제풀이 < 두 배열의 원소 교체 > (0) 2022.09.09 정렬 알고리즘 - 퀵 정렬 (0) 2022.09.08 정렬 알고리즘 - 삽입 정렬 (0) 2022.09.06 정렬 알고리즘 - 선택 정렬 (0) 2022.09.06