알고리즘
-
[이취코] ch06-3. 퀵 정렬Major/Algorithms 2022. 3. 30. 12:20
퀵 정렬은 매우 많이 사용되는 알고리즘으로 속도가 매우 빠르다 퀵 정렬과 합병(병합) 정렬은 프로그래밍 언어에서 정렬 라이브러리의 근간이 되는 알고리즘이기도하다 퀵정렬? 기준을 설정한 다음 큰 수와 작은 수를 교환한 후 리스트를 반으로 나누는 방식이다 퀵정렬은 분할정복 알고리즘으로 분류되고, 합병정렬과 다른점은 각 부분 문제의 크기가 일정하지 않다는 것이다 (합병정렬은 일정 분할이다) 퀵 정렬에서는 피벗(pivot)이 사용된다 피벗은 큰 숫자와 작은 숫자를 교환할 때, 교환하기 위한 '기준'이다 퀵 정렬을 수행하기전에는 피벗을 어떻게 설정할것인지 반드시 명시해야한다 피벗을 설정하는 방식에는 여러가지가 있지만 우선 대표적인 호어 분할(Hoare Partition)방식을 기준으로 이해해보자 호어분할방식 - ..
-
[이취코] ch06-1. 선택정렬 (Selection Sort)Major/Algorithms 2022. 3. 30. 09:59
선택정렬? 데이터가 무작위로 있을 때, 이 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸고 그 다음 작은 데이터를 선택해 앞에서 두번째 데이터와 바꾸는과정을 반복하는 것이다 이 방법은 가장 원시적으로, '매번 가장 작은 것을 선택한다'는 의미에서 선택정렬이다 정렬되어있지 않은 초기 데이터를 선택정렬로 정렬해보자 7 5 9 0 3 1 6 2 4 8 * 주황: 정렬되지 않은 데이터 중 가장 작은 데이터 * 초록: 가장 작은 데이터와 자리가 교체되는 맨 앞에 있던 데이터 (1) 가장 작은 데이터 0을 선택하고 맨 앞에 있는 데이터 7과 바꿔준다 → 0 5 9 7 3 1 6 2 4 8 (2) 정렬되지 않은 남은 데이터 중 가장 작은 데이터 1을 선택하고 맨 앞 데이터 5와 자리를 바꿔준다 → 0..