IT/data structure

[Data Structure] Insert Sorting

내일은교양왕 2024. 3. 9. 19:20

Stable sort

같은 요소들의 순서가 보장되는 정렬 

 

Time Complex

  • Average time: n
  • Worst time: n (important in ciritical systems)
  • Space requirement: in-place sorts를 사용하면 최상의 케이스.

in-place sorts

정렬하기 위해 컬랙션을 복사하지 않는 방법, 다른 변수를 사용하지 않거나 아니면 거의 사용하지 않거나

 

Insertion sort

요소를 처음부터 끝까지 읽으면서 정렬시키는 방법

  • 첫번쨰 요소는 이미 정렬된 리스트를 갖는다.
  • 두번째 요소를 가져와 첫번째 요소와 비교 후 조건에 따라 서로 교환한다.
  • 세번째 요소를 가져와 두번째 요소와 비교 후 조건에 따라 서로 교환한다.
  • 계속 같은 방법으로 끝까지 진행

 

Time Complex

  • Average time: quadratic in n
  • Worst time: quadratic in n
  • best-case: linear in n (이미 정렬되어 있을 때)

 

특징

  • in-place sort
  • worst space (n) is constant
  • 컬렉션이 짧거나 거의 정렬되어 있는 컬렉션일 경우
function sorBytInsertion(nums: number[]) {
    for (let i = 1; i < nums.length; i++) {
        for (let j = i; j > 0 && nums[j - 1] > nums[j]; j--) {
            const tmp = nums[j]
            nums[j] = nums[j - 1]
            nums[j - 1] = tmp
        }
    }
    console.log(nums) // [2, 3, 4, 5, 6] 
}

sortInsertion([6, 3, 2, 5, 4])