삽입 정렬(Javascript)을 연습해 봅시다.

코드를 보여주세요




let data = [8, 6, 10, 5, 3, 9, 2, 7, 4, 1]

function InsertSort(arr) {
    for (let i = 0; i < arr.length; i++) {
        let currentIdx = i
        for (let j = i - 1; j >= 0; j--) {
            if (arr[currentIdx] < arr[j]) {
                [arr[currentIdx], arr[j]] = [arr[j], arr[currentIdx]]
                currentIdx = j
            }
        }
    }

    return arr


}
console.log(InsertSort(data))//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


핵심 아이디어



이 알고리즘의 까다로운 부분:
  • 후자를 비교할 인덱스인 currentIdx 변수를 정의합니다.
  • 두 번째 중첩 for-loop는 j 인덱스를 가지며 currentIdx 와 비교됩니다.
  • currentIdx는 이미 현재 인덱스인 i에 할당되었으므로 j는 이전 인덱스인 j-1가 될 것이므로 비교하고자 합니다.
  • 두 숫자를 나란히 비교합니다. 이것은 이 알고리즘이 작동하는 방식의 일부입니다.
  • 마지막으로 조건이 일치하면(즉, arr[currentIdx] < arr[j] ) 스왑하고 currentIdxj 에 동적으로 리바인딩해야 합니다. 이것은 이전 인덱스 지점을 찾아 교체(또는 "삽입")하는 이 알고리즘의 필수 부분입니다.
  • 팁: Google에 "정렬 애니메이션 삽입"을 검색하여 알고리즘이 어떻게 진행되는지 시각적으로 파악하십시오.
  • 좋은 웹페이지 즐겨찾기