[Python] ๋ณ‘ํ•ฉ์ •๋ ฌ

2020. 8. 23. 23:55ยทAlgorithm/Python

๋ณ‘ํ•ฉ์ •๋ ฌ

๋ฐ์ดํ„ฐ์˜ ์š”์†Œ๋“ค์„ ๋‘ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆˆ ํ›„ ์ •๋ ฌํ•˜๊ณ , ์ •๋ ฌ๋œ ๋‘ ๊ทธ๋ฃน์„ ๋น„๊ตํ•˜๋ฉฐ ํ•˜๋‚˜๋กœ ํ•ฉ์น˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

๋ณ‘ํ•ฉ์ •๋ ฌ๊ณผ์ •

#์ˆซ์ž 8๊ฐœ๋ฅผ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค 
group1 = [2, 8, 4, 7]
group2 = [6, 1, 3, 5]

#๋‘ ๊ทธ๋ฃน์„ ์ •๋ ฌํ•œ๋‹ค.
group1 = [2, 4, 7, 8]
group2 = [1, 3, 5, 6]

#๋‘ ๊ทธ๋ฃน์„ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์œผ๋กœ ํ•ฉ์นœ๋‹ค.
๋‘ ๊ทธ๋ฃน์˜ ์ฒซ๋ฒˆ์งธ ๊ฐ’์„ ๋น„๊ตํ•ด ์ž‘์€ ๊ฐ’์„ ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ(result)์— ๋„ฃ๋Š”๋‹ค.
group1 = [2, 4, 7, 8]
group2 = [3, 5, 6]
result = [1]

#๋‘ ๊ทธ๋ฃน์˜ ์ฒซ๋ฒˆ์งธ ๊ฐ’์„ ๋น„๊ตํ•ด ์ž‘์€ ๊ฐ’์„ ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ์— ๋„ฃ๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
group1 = [4, 7, 8]
group2 = [3, 5, 6]
result = [1, 2]

group1 = [4, 7, 8]
group2 = [5, 6]
result = [1, 2, 3]

group1 = [7, 8]
group2 = [5, 6]
result = [1, 2, 3, 4]

group1 = [7, 8]
group2 = [6]
result = [1, 2, 3, 4, 5]

group1 = [7, 8]
group2 = []
result = [1, 2, 3, 4, 5, 6]

#group2์—๋Š” ์ž๋ฃŒ๊ฐ€ ์—†์œผ๋ฏ€๋กœ group1์— ๋‚จ์•„์žˆ๋Š” ์ž๋ฃŒ๋ฅผ ๋ชจ๋‘ result๋กœ ์˜ฎ๊ธด๋‹ค.
group1 = []
group2 = []
result = [1, 2, 3, 4, 5, 6, 7, 8]

๊ฒฐ๊ณผ : [1, 2, 3, 4, 5, 6, 7, 8]



๋ณ‘ํ•ฉ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

def merge_sort(a):
    n = len(a)

    if n <= 1:
        return

    mid = n // 2
    g1 = a[:mid]
    g2 = a[mid:]
    merge_sort(g1)
    merge_sort(g2)

    i = 0
    j = 0
    k = 0

    while i < len(g1) and j < len(g2):
        if g1[i] < g2[j]:
            a[k] = g1[i]
            i += 1
            k += 1
        else:
            a[k] = g2[j]
            j += 1
            k += 1
    
    while i < len(g1):
        a[k] = g1[i]
        i += 1
        k += 1
    while j < len(g2):
        a[k] = g2[j]
        j += 1
        k += 1

d = [6, 8, 3, 9, 10, 1, 2, 4, 7, 5]
merge_sort(d)
print(d)

๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•

def merge_sort(a):
    n = len(a)

    if n <= 1:
        return a
    
    mid = n // 2
    g1 = merge_sort(a[:mid])
    g2 = merge_sort(a[mid:])
    result = []
    while g1 and g2:
        if g1[0] < g2[0]:
            result.append(g1.pop(0))
        else:
            result.append(g2.pop(0))
    while g1:
        result.append(g1.pop(0))
    while g2:
        result.append(g2.pop(0))
    return result

d = [6, 8, 3, 9, 10, 1, 2, 4, 7, 5]
print(merge_sort(d))

์ฐธ๊ณ 

๋ณ‘ํ•ฉ์ •๋ ฌ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(N * logN)์ด๋‹ค.

 

'Algorithm > Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python] ์ด๋ถ„ ํƒ์ƒ‰  (0) 2020.08.26
[Python] ํ€ต ์ •๋ ฌ  (0) 2020.08.25
[Python] ์‚ฝ์ž…์ •๋ ฌ  (0) 2020.08.22
[Python] ์„ ํƒ์ •๋ ฌ  (0) 2020.08.20
[Python] ์ˆœ์ฐจํƒ์ƒ‰  (0) 2020.08.19
'Algorithm/Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Python] ์ด๋ถ„ ํƒ์ƒ‰
  • [Python] ํ€ต ์ •๋ ฌ
  • [Python] ์‚ฝ์ž…์ •๋ ฌ
  • [Python] ์„ ํƒ์ •๋ ฌ
๐ŸฅญMango
๐ŸฅญMango
  • ๐ŸฅญMango
    AppleMango๐Ÿฅญ
    ๐ŸฅญMango
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
      • iOS
        • Swift
        • SwiftUI
        • RxSwift
      • Algorithm
        • C
        • Python
        • Swift
      • Computer Science
        • ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ
        • OS
      • ...
      • ๊ฐœ๋ฐœ ํƒ€์ž„์บก์А
        • Python
        • Flutter
        • Android
        • Kotlin
        • Java
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์ฝ”ํ‹€๋ฆฐ ์ƒ์†
    ํŒŒ์ด์ฌ 6118
    Apple Login
    14503 ๋กœ๋ด‡์ฒญ์†Œ๊ธฐ
    1613 ์—ญ์‚ฌ
    14503 ํŒŒ์ด์ฌ
    6118
    swiftUI Gradients
    ์ฝ”ํ‹€๋ฆฐ
    Code Base
    SwiftUI
    ์—ญ์‚ฌ ํŒŒ์ด์ฌ
    ํ† ๋งˆํ† 
    IOS
    ํŒŒ์ด์ฌ 1459
    ๋ฐฑ์ค€ ์†Œ์ˆ˜
    typing animation
    ํŒŒ์ด์ฌ
    ํŒŒ์ด์ฌ ํ† ๋งˆํ† 
    swiftUI tabview
    ์Šคํƒ
    1613 ํŒŒ์ด์ฌ
    SwiftUI Apple Login
    1์ฐจ์› ๋ฟŒ์š”๋ฟŒ์š”
    MapMarker
    ํŒŒ์ด์ฌ ์ •๋ ฌ
    ๋ฐฑ์ค€ ํ† ๋งˆํ† 
    Custom Map Marker
    ํŒŒ์ด์ฌ 14503
    Swift Hello World!
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.2
๐ŸฅญMango
[Python] ๋ณ‘ํ•ฉ์ •๋ ฌ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”