Algorithm/Python

[Python] ์‚ฝ์ž…์ •๋ ฌ

๐ŸฅญMango 2020. 8. 22. 21:30

์‚ฝ์ž…์ •๋ ฌ

๋ฐ์ดํ„ฐ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์•ž์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐฐ์—ด ๋ถ€๋ถ„๊ณผ ๋น„๊ตํ•˜์—ฌ, ์ž์‹ ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„ ์‚ฝ์ž…ํ•จ์œผ๋กœ์จ ์ •๋ ฌ์„ ์™„์„ฑํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

์‚ฝ์ž…์ •๋ ฌ๊ณผ์ •

์˜ˆ๋ฅผ ๋“ค์–ด [2, 4, 5, 1, 3] ์ด ์žˆ์„ ๋•Œ, ์ž์‹ ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„ ๊ทธ ์œ„์น˜์— ๋“ค์–ด๊ฐ„๋‹ค.

[2, 4, 5, 1, 3] # ์‹œ์ž‘

[2 | 4, 5, 1, 3] # 2๋Š” ๋งจ ์•ž์— ์œ„์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค.

[2  4 | 5, 1, 3] # 4๋ถ€ํ„ฐ ๋น„๊ต, 2์˜ ๋’ค์ด๋ฏ€๋กœ ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค.

[2  4  5 | 1, 3] # 5๋น„๊ต, 4์˜ ๋’ค์ด๋ฏ€๋กœ ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค.

[2  4 | 5, 1, 3] # 1๋น„๊ต, 1์˜ ์ž๋ฆฌ๋Š” ๋งจ ์•ž์ด๋ฏ€๋กœ ํ•œ ์นธ์”ฉ ์˜ฎ๊ฒจ๊ฐ€๋ฉฐ 1์˜ ์ž๋ฆฌ์— 1์„ ๋„ฃ๋Š”๋‹ค.

[1  2  4  5 | 3] # 3๋น„๊ต, 3์˜ ์ž๋ฆฌ๋Š” 4์™€ 5์˜ ์•ž์ด๋ฏ€๋กœ ํ•œ ์นธ์”ฉ ์˜ฎ๊ฒจ๊ฐ€๋ฉฐ 3์˜ ์ž๋ฆฌ์— 3์„ ๋„ฃ๋Š”๋‹ค.

๊ฒฐ๊ณผ [1, 2, 3, 4, 5]

 

์‚ฝ์ž…์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

def ins_sort(a):
    n = len(a)
    for i in range(1, n):
        key = a[i]
        j = i - 1

        while j >= 0 and a[j] > key:
            a[j + 1] = a[j]
            j -= 1
        a[j + 1] = key
        

d = [2, 4, 5, 1, 3]
ins_sort(d)
print(d)

์ฐธ๊ณ 

์‚ฝ์ž… ์ •๋ ฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N^2)์ด๋‹ค.

ํ•˜์ง€๋งŒ [1, 2, 3, 4, 5] ๊ฐ™์€ ์ •๋ ฌ์ด ์™„๋ฃŒ๋œ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ์—๋Š” O(N)์œผ๋กœ ์ •๋ ฌ์„ ๋งˆ์น  ์ˆ˜ ์žˆ๋‹ค.