Javascript 코드로 보는 알고리즘 선택 정렬(selection sort) 학습하기

Selection Sort 살펴보기

CianJS
3 min readDec 12, 2020

요약

  • 선택 정렬은 정렬 알고리즘이다.
  • O(n²)의 시간 복잡도를 가지고 있다.
  • 제자리 정렬(in-place sorting) 알고리즘이기 때문에 추가적인 메모리를 필요로 하지 않는다.

선택 정렬은 첫 번째 값을 두 번째 값부터 마지막 값까지 비교해서 보다 작은 값을 찾은 후 자리를 바꾸는 방식을 사용합니다.

선택 정렬 이미지 예제

설명은 여기까지만 하고 바로 코드로 가볼게요!

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/

--

--

CianJS
CianJS

Written by CianJS

영어랑 영문서 자유롭게 듣고 읽고 싶다..

No responses yet