알고리즘 with 자바

준비중..

알고리즘 with 자바

문제 해결을 위한 개발자의 필수 소양!

05 선택 정렬(selection sort)

# 선택 정렬 ## 목차 --- 1. 무엇? 2. 특징? 3. 알고리즘 ## 1. 무엇? --- 제자리 정렬 알고리즘의 하나. 아래와 같은 흐름으로 동작. 1. 주어진 리스트 중 최소값을 찾음 2. 그 값을 맨 앞에 위치한 값과 교체 3. 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체 ## 2. 특징? --- - 추가 메모리가 필요 X - 느림, 시간 복잡도 O(n^2) ## 3. 알고리즘 --- ![클라우드스터딩-알고리즘-선택-정렬](https://i.imgur.com/qrbD54n.gif) ### 의사 코드 ``` for i = 0 to n: a[i]부터 a[n - 1]까지 차례로 비교하여 가장 작은 값이 a[j]에 있다고 하자. a[i]와 a[j]의 값을 서로 맞바꾼다. ``` ### 소스코드 ``` void selectionSort(int[] list) { int indexMin, temp; for (int i = 0; i < list.length - 1; i++) { indexMin = i; for (int j = i + 1; j < list.length; j++) { if (list[j] < list[indexMin]) { indexMin = j; } } temp = list[indexMin]; list[indexMin] = list[i]; list[i] = temp; } } ``` ## 요약 --- ## Ref. --- 1. https://codepumpkin.com/selection-sort-algorithms/