- [Algorithm log] InsertionSort2020년 06월 12일
- alpha brain
- 작성자
- 2020.06.12.:10
728x90반응형삽입 정렬은 가장 처음 요소는 정렬이 되어있다고 생각하고
다음 요소부터 하나씩 비교하면서 정렬하는 방법이다.
.....
이걸 또 정렬될 때까지 하면 된다.
삽입 정렬에서 중요한 것은 위치를 찾아 들어갈 때 요소들을 한 칸씩 뒤로 밀어줘야 한다. swap의 방식이 아니기 때문이다.
그래서 정렬된 요소들에 대해 뒤에서 부터 비교를 해준 후 한 칸씩 당기면서 찾아들어간다.
반복해서 들어갈 위치를 찾는다.
전체 사이클은 첫 번째 요소를 제외한(첫 번째 요소는 정렬된요소로 간주하니까!) 전체요소의 길이만큼 돌 것이고 한 사이클당 요소는 앞에 정렬된 요소의 길이만큼 돌아야 할것이다.
code
function insertionSort(array){ for(let i=1; i<array.length; i++){ // 전체 사이클 let element = array[i]; for(let j=i-1; j>=0; j--){ // 한 사이클 // 정렬된 요소가 더 크면 한 칸 뒤로 땡긴다. if(array[j] > element){ array[j+1] = array[j]; }else{ // 순서가 맞으면 그냥 끝내면 된다. break; } // 땡겨진 상태이므로 바로 넣어주면 된다. array[j] = element; } } return array; }
두 번째 반복문을 보게 되면 for문을 역으로 사용한 것을 볼 수 있다. 뒤에서부터 비교하여 하나씩 당기기 위함이다.
한 개씩 당겼으니까 바로 넣어주면 된다.
for문 연습을 잘하자.!!
728x90반응형'SOFTWARE DEVELOP > Algorithm log' 카테고리의 다른 글
[Algorithm log] MergeSort (0) 2020.06.15 [Algorithm log] SelectionSort (0) 2020.06.12 [Algorithm log] BubbleSort (0) 2020.06.12 [Algorithm log] findShortestOfThreeWords (0) 2020.01.14 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)