선택 정렬은 첫 번째 값을 두 번째 값부터 마지막 값까지 비교해서 보다 작은 값을 찾은 후 자리를 바꾸는 방식을 사용합니다.
설명은 여기까지만 하고 바로 코드로 가볼게요!
Javascript로 작성한 선택 정렬의 예제입니다!
아래의 값을 정확히 이해하고 넘어가시면 설명을 이해하시는데 도움이 되실거에요!
- idx: 비교 대상 값의 위치 값
- value : 비교 대상 값
- nextValue : idx로 가리키는 값보다 앞에 위치한 값들
- targetIndex : nextValue보다 크거나 작다고 판단된 값의 위치 값
- targetValue : nextValue보다 크거나 작다고 판단된 값
사실 위의 내용을 전부 이해하셨다면 설명할 내용이 없습니다. 😄
우선은 6번째 줄 부터 보도록 하겠습니다.
여기서는 정렬을 하려는 배열 전체를 한번만 loop하는 것입니다.
10번째 줄에서는 비교할 값의 다음 위치부터 마지막 위치까지 값의 비교를 위해 loop가 진행됩니다.
예를 들어 처음에 비교할 값의 위치가 1이라면 10번째 줄에서는 2~n까지 반복을 하는 것입니다.
그다음으로는 13, 17 줄에서는 order(정렬 기준)에 따라서 값을 비교하고 targetIndex, targetValue에 값을 넣어줍니다.
그렇게 10번째 줄의 loop가 끝났다면 값의 변경을 해주는 작업을 진행합니다. (23~31 번째 줄)
아마 위의 글을 읽으시는 것보다 코드를 직접 돌려보며 내용을 보시는 것이 이해하시기 편하실 겁니다. 😅
참고 문서
- https://gmlwjd9405.github.io/2017/10/01/basic-concepts-of-development-algorithm.html
- https://github.com/trekhleb/javascript-algorithms/tree/master/src/algorithms/sorting/selection-sort
- https://stackabuse.com/selection-sort-in-javascript/