[알고리즘] 정렬 알고리즘(Sorting)(3) - 계수 정렬
계수 정렬 특정한 조건이 부합할 때만 사용할 수 있지만, 매우 빠르게 동작하는 정렬 알고리즘 데이터의 크기 범위가 제한되어 정수 형태로 표현할 수 있을 때 사용 가능 데이터의 개수가 N, 데이터(양수) 중 최댓값이 K일 때 최악의 경우에도 수행시간 O(K+K)를 보장 1. 가장 작은 데이터부터 가장 큰 데이터까지의 범위가 모두 담길 수 있는 리스트 초기화 2. 각 인덱스가 데이터의 값에 해당 3. 각각의 데이터가 총 몇 번씩 등장했는 지 개수를 세면 됨 4. 데이터를 하나씩 확인하며 데이터의 값과 동일한 인덱스의 데이터를 1씩 증가 (Count) 5. 결과를 확인할 때 리스트이 첫 번째 데이터부터 하나씩 그 값만큼 반복하여 인덱스 출력 array = [7, 5, 9, 0, 3, 1, 6, 2, 9, 1,..
정렬 알고리즘(Sorting)(1) - 선택정렬, 삽입정렬
정렬(Sorting) 데이터를 특정한 기준에 따라 순서대로 나열 선택정렬 처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꿈 array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] for i in range(len(array)): min_index = i for j in range(i+1, len(array)): if array[min_index] > array[j]: min_index = j array[i], array[min_index] = array[min_index], array[i] #스와프 print(array) 선택정렬의 시간 복잡도 N번 만큼 가장 작은 수를 찾아서 맨 앞으로 보내기 -> N + (N-1) + (N-2) + ... + 1 -> ..