Selection_sort.md


μ •λ ¬(Sorting)


데이터λ₯Ό νŠΉμ •ν•œ 기쀀에 λ”°λΌμ„œ μˆœμ„œλŒ€λ‘œ λ‚˜μ—΄ν•˜λŠ” 것

  • λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬

  • μ˜€λ¦„μ°¨μˆœ μ •λ ¬ λ“±λ“±

선택 μ •λ ¬(Selection Sorting)


κ°œλ…

  • 제자리 μ •λ ¬(in-place sorting) μ•Œκ³ λ¦¬μ¦˜μ˜ ν•˜λ‚˜

    • μž…λ ₯ λ°°μ—΄(μ •λ ¬λ˜μ§€ μ•Šμ€ κ°’λ“€) 이외에 λ‹€λ₯Έ μΆ”κ°€ λ©”λͺ¨λ¦¬λ₯Ό μš”κ΅¬ν•˜μ§€ μ•ŠλŠ” μ •λ ¬ 방법

  • ν•΄λ‹Ή μˆœμ„œμ— μ–΄λ–€ μ›μ†Œλ₯Ό 넣을지 μ„ νƒν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜

νŠΉμ§•

  • 자료 이동 νšŸμˆ˜κ°€ 미리 κ²°μ •λœλ‹€.

  • 값이 같은 λ ˆμ½”λ“œκ°€ μžˆλŠ” κ²½μš°μ— μƒλŒ€μ μΈ μœ„μΉ˜κ°€ 변경될 수 μžˆλ‹€.

μ‹œκ°„λ³΅μž‘λ„ O(n^2)

μ˜ˆμ‹œ

  • 첫번째 자료λ₯Ό λ‘λ²ˆμ¨°μžλ£ŒλΆ€ν„° λ§ˆμ§€λ§‰ μžλ£ŒκΉŒμ§€ μ°¨λ‘€λŒ€λ‘œ λΉ„κ΅ν•˜μ—¬ κ°€μž₯ μž‘μ€ 값을 μ°Ύμ•„ μ²«λ²ˆμ§Έμ— 놓고, 두 번째 자료λ₯Ό μ„Έλ²ˆμ§Έ μžλ£ŒλΆ€ν„° λ§ˆμ§€λ§‰ μžλ£ŒκΉŒμ§€μ™€ μ°¨λ‘€λŒ€λ‘œ λΉ„κ΅ν•˜μ—¬ κ·Έ 쀑 κ°€μž₯ μž‘μ€ 값을 μ°Ύμ•„ λ‘λ²ˆμ§Έ μœ„μΉ˜μ— λ†“λŠ” 과정을 λ°˜λ³΅ν•˜λ©° 정렬을 μˆ˜ν–‰ν•œλ‹€.

κ΅¬ν˜„

def selection_sort(arr):
    for i in range(len(arr)):
        for j in range(i+1, len(arr)):
            if arr[i] < arr[j]:
                arr[i], arr[j] = arr[j], arr[i]
    return arr

Last updated