Insertion Sort

μ •λ ¬ κ³Όμ •

  • μ •λ ¬ν•  자료λ₯Ό 두 개의 뢀뢄집합 S와 U둜 κ°€μ •

    1. 뢀뢄집합 S : μ •λ ¬λœ μ•žλΆ€λΆ„μ˜ μ›μ†Œλ“€

    2. 뢀뢄집합 U : 아직 μ •λ ¬λ˜μ§€ μ•Šμ€ λ‚˜λ¨Έμ§€ μ›μ†Œλ“€

  • μ •λ ¬λ˜μ§€ μ•Šμ€ 뢀뢄집합 U의 μ›μ†Œλ₯Ό ν•˜λ‚˜μ”© κΊΌλ‚΄μ„œ 이미 μ •λ ¬λ˜μ–΄μžˆλŠ” 뢀뢄집합 S의 λ§ˆμ§€λ§‰ μ›μ†ŒλΆ€ν„° λΉ„κ΅ν•˜λ©΄μ„œ μœ„μΉ˜λ₯Ό μ°Ύμ•„ μ‚½μž…ν•œλ‹€.

  • μ‚½μž… 정렬을 λ°˜λ³΅ν•˜λ©΄μ„œ 뢀뢄집합 S의 μ›μ†ŒλŠ” ν•˜λ‚˜μ”© 늘리고 뢀뢄집합 U의 μ›μ†ŒλŠ” ν•˜λ‚˜μ”© κ°μ†Œν•˜κ²Œ λœλ‹€.

  • 뢀뢄집합 Uκ°€ 곡집합이 되면 μ‚½μž…μ •λ ¬μ΄ μ™„μ„±λœλ‹€

μ‹œκ°„ λ³΅μž‘λ„

  • O (n ^ 2)

    • 각 λΆ€λΆ„μ§‘ν•©μ˜ μ›μ†Œλ₯Ό 맀번 비ꡐ해야 ν•˜λ―€λ‘œ!

Iterative Selection Sort

arr = [69, 10, 30, 2, 16, 8, 31, 22]
N = len(arr)

for i in range(1,N):  # 1 ~ N-1
    tmp = arr[i]
    print(arr[:i], arr[i:])
    j = i -1
    while j >= 0 and arr[j] > tmp:
        arr[j+1] = arr[j]
        j -= 1
    arr[j+1] = tmp

print(arr)

Last updated