본문 바로가기

Algorithm/algorithm8

카운팅정렬[counting sort] 카운팅정렬이란 항목들의 순서로 결정하기 위해 집합에 각 항목이 몇개씩 있는지 세는 작업을 하여, 선형시간에 정렬하는 효울적인 알고리즘이다. 카운팅정렬은 기본적인 요소가 갖추어져야 하는 정렬인데.. 정수나 정수로 표현할 수 있는 자료에 대해서만 적용이가능. (각 항목의 발생횟수를 기록하기 위해, 정수항목으로 index되는 카운트들의 배열을 사용하기 때문) 카운트들을 위핸 충분한 공간을 항당하려면 집합 내의 가장 큰 정수를 알아야함. 시간복잡도: O(n+k) (여기서 n은 배열의 길이, k는 정수의 최댓값이다.) 정렬 전 준비물: 1.주어진값(data) 2. data에 가장 큰 원소+1 의 리스트(counts) 3. data와 같은 크기의 리스트(temp) 정렬과정 1. 주어진 data의 최댓값만큼 coun.. 2022. 4. 14.
버블정렬[bubble sort] 버블정렬이란 인접한 두개의 원소를 비교하며 자리를 계속 교환하는 방식이다. 시간복잡도: O(n**2) 정렬과정 첫번째 원소부터 인접한 원소끼리 계속 자리를 교환하면서 맨 마지막 자리까지 이동 한 단계가 끝나면 가장 큰 원소가 마지막에 배열 python으로 코드를 가볍게 표현하자면 #버블정렬 arr = [0,3,2,5,6,7,9,8,1] for i in range(len(arr) - 1, 0, -1): for j in range(i): if arr[j] > arr[j + 1]: arr[j], arr[j + 1] = arr[j + 1], arr[j] print(*arr) 외부 반복문에서는 뒤에서 부터 범위를 줄여가고, 내부반복문을 통해 0번 index부터 외부반복문의 변수인 i까지 크기를 비교하며 큰 숫자를.. 2022. 4. 13.