[Algorithm] μ‚½μž…μ •λ ¬ - Insertion Sort

Updated:

  • Insertion Sort

    μ§€κΈˆκΉŒμ§€ 배운 μ •λ ¬ 방법듀을 정리해보렀고 ν•œλ‹€.

    λ‹€λ₯Έ λΈ”λ‘œκ·Έλ₯Ό 보면 μ‹œκ°„λ³΅μž‘λ„ λ“±λ“± μ•„μ£Ό μžμ„Ένžˆ μ„€λͺ…ν•˜κ³  μžˆλ‹€.

    ν•˜μ§€λ§Œ λ‚˜λŠ” 아직 λ‚¨μ—κ²Œ κ°€λ₯΄μ³ 쀄 μ •λ„λŠ” μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— 볡슡용으둜 μ •λ¦¬ν•˜κ³  μžˆλ‹€.

    κ·Έλž˜μ„œ μ•„μ£Ό κ°„λ‹¨ν•˜κ²Œ κ°œλ…μ΄λž‘ μ½”λ“œ μ •λ„λ§Œ μ†Œκ°œν•˜λ €κ³  ν•œλ‹€.


    κ·Έ 쀑 μ²«λ²ˆμ§ΈλŠ” μ‚½μž…μ •λ ¬μ΄λ‹€.

    μ’…μ’… 선택정렬과 μ‚½μž…μ •λ ¬μ΄ ν—·κ°ˆλ¦΄λ•Œκ°€ μžˆλ‹€.

    λ¬Όλ‘  μ •λ ¬λ§Œ λœλ‹€λ©΄ μ–΄λ–€ 정렬을 써도 상관 μ—†μ§€λ§Œ, μ‹œκ°„λ³΅μž‘λ„μ˜ 졜고 νš¨μœ¨μ„ μœ„ν•΄μ„ 

    상황에 λ§žλŠ” 정렬을 써야 ν•  것이닀.


    μ‚½μž…μ •λ ¬μ€ 말 κ·ΈλŒ€λ‘œ μ•žμ—μ„œ λΆ€ν„° 비ꡐλ₯Ό ν•΄ μžμ‹ μ˜ μœ„μΉ˜μ— μ‚½μž… ν•˜λŠ” 정렬이닀.

    μ—­μ‹œ 말둜만 μ“°λ©΄ μ—„μ²­ μ‰¬μ›Œ 보인닀. λ¬Όλ‘  λ‹€λ₯Έ 정렬에 λΉ„ν•΄ 쉽긴 ν•˜μ§€λ§Œ

    잘 μ΅ν˜€λ‘μž !


    μœ„ 사진이 μ•„μ£Όμ•„μ£Ό κ°„λ‹¨ν•˜κ²Œ ν‘œν˜„ ν•œ μ‚½μž…μ •λ ¬μ΄λ‹€.

    μ™Όμͺ½μ—μ„œ λΆ€ν„° KEY값을 μ •ν•΄ κ·Έ KEYκ°’μ˜ μœ„μΉ˜λ₯Ό μ°Ύμ•„ μ‚½μž…ν•˜λŠ” 것 이닀.


    μ½”λ“œλ‘œ 보자면

    void insertionSort(int *arr, int arrSize) {
        int i, j, key;
          
        // λ°°μ—΄μ˜ μ›μ†Œ 개수 - 1 만큼 λ°˜λ³΅ν•œλ‹€.
        for(i=1; i<arrSize; i++) {
            key = arr[i];
            for(j=i-1; j>=0; j--) {
                if(key < arr[j]) {
                    arr[j+1] = arr[j]; // key κ°’ 보닀 크닀면 였λ₯Έμͺ½μœΌλ‘œ ν•œμΉΈ 이동
                else
                    break;
            }
            arr[j+1] = key; // 비ꡐ ν›„ j 값은 key 값이 μ‚½μž…λ  μœ„μΉ˜ - 1 이 λ˜λ―€λ‘œ
        }
    }
    

    이 μ •λ„λ‘œ ν‘œν˜„ ν•  수 μžˆκ² λ‹€.

    이쀑 포문 μ•ˆμ— 쑰건문을 μ‚¬μš©ν•˜μ§€ μ•Šκ³  ν•œμ€„λ‘œ μ²˜λ¦¬ν•  수 μžˆλ‹€.

    κ·Έ 방법도 ν•œ 번 μƒκ°ν•΄λ³΄μž.


Leave a comment