2017/07/03 2

Python으로 알고리즘 공부 03. 계수 정렬 (Counting Sort)

계수 정렬 (Counting Sort) 파이썬으로 구현계수 정렬은 비교 정렬이 아니다.K가 정수일 때 (즉, K가 어떤 최대값을 가질때), 입력 요소들이 1부터 K까지의 정수라고 가정.히스토그램과 같이 각 요소들이 전체 리스트에서 몇 개씩 존재하는 지를 세아려 테이블을 만든다.입력된 X 아래에 몇개의 정수들이 존재하는 지에 따라 X의 위치가 결정되는 알고리즘.(예를 들어, 5보다 작은 정수 (1,2,3,4) 가 10개 존재한다면, 5가 들어갈 위치는 11번째이다.)시간복잡도가 O(n)이다. def counting_sorted(arr, K): c = [0] * K sorted_arr = [0] * len(arr) for i in arr: c[i] += 1 for i in range(1,K): c[i] +=..

아카이빙 2017.07.03

Python으로 알고리즘 공부 02. 퀵 정렬 (Quick Sort)

퀵 정렬 (Quick Sort) 파이썬으로 구현퀵 정렬은 분할 정복 알고리즘의 좋은 예이다.리스트 중 하나를 pivot으로 정하고, pivot보다 작은 아이템은 왼쪽, pivot보다 큰 아이템은 오른쪽으로 보내면서 pivot의 자리를 확정한다.그리고 왼쪽 리스트와 오른쪽 리스트에 대해서 재귀형식으로 진행.평균 시간복잡도는 O(n*log n), 최악의 시간복잡도는 O(n^2) def quick_sorted(arr): if len(arr) > 1: pivot = arr[len(arr)-1] left, mid, right = [], [], [] for i in range(len(arr)-1): if arr[i] pivot: right.append(arr[i]) else: mid.append(arr[i]) mi..

아카이빙 2017.07.03