Guidelines

병합 μ •λ ¬ κ΅¬ν˜„ 방법

1. λΆ„ν• : μ›λž˜μ˜ 리슀트λ₯Ό κ°€λŠ₯ν•œ ν•œ κ· λ“±ν•œ 두 λΆ€λΆ„μœΌλ‘œ λ‚˜λˆ•λ‹ˆλ‹€.

λΆ„ν•  μ˜ˆμ‹œ
mid = len(arr) // 2 L = arr[:mid] R = arr[mid:]

2. μž¬κ·€μ  μ •λ ¬: 각 뢀뢄을 μž¬κ·€μ μœΌλ‘œ μ •λ ¬ν•©λ‹ˆλ‹€.

μž¬κ·€μ  μ •λ ¬ μ˜ˆμ‹œ
merge_sort(L) merge_sort(R)

3. 병합: μ •λ ¬λœ 두 뢀뢄을 ν•˜λ‚˜μ˜ μ •λ ¬λœ 리슀트둜 λ³‘ν•©ν•©λ‹ˆλ‹€.

병합 μ˜ˆμ‹œ
i = j = k = 0 while i < len(L) and j < len(R): if L[i] < R[j]: arr[k] = L[i] i += 1 else: arr[k] = R[j] j += 1 k += 1 while i < len(L): arr[k] = L[i] i += 1 k += 1 while j < len(R): arr[k] = R[j] j += 1 k += 1

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

  1. μ΅œμ•…μ˜ 경우 μ‹œκ°„ λ³΅μž‘λ„: O(nlog n)

    • 병합 정렬은 λΆ„ν• κ³Ό 병합 κ³Όμ •μ—μ„œ μΌμ •ν•œ μ‹œκ°„ λ³΅μž‘λ„λ₯Ό μœ μ§€ν•©λ‹ˆλ‹€. 각 λ‹¨κ³„μ—μ„œ 배열을 반으둜 λ‚˜λˆ„κ³ , 각 λ ˆλ²¨μ—μ„œ (n)의 μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. λ”°λΌμ„œ, ( \log n ) λ‹¨κ³„μ—μ„œ 총 ( n ) μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ²Œ λ©λ‹ˆλ‹€.
  2. μ΅œμ„ μ˜ 경우 μ‹œκ°„ λ³΅μž‘λ„: O(nlog n)

    • 병합 정렬은 μ΅œμ„ μ˜ κ²½μš°μ—λ„ 배열을 λ‚˜λˆ„κ³  λ³‘ν•©ν•˜λŠ” 과정이 λ™μΌν•˜κ²Œ μ§„ν–‰λ˜λ―€λ‘œ μ‹œκ°„ λ³΅μž‘λ„λŠ” λ³€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  3. 평균 μ‹œκ°„ λ³΅μž‘λ„: O(nlog n)

    • 일반적인 κ²½μš°μ—λ„ 병합 정렬은 μΌμ •ν•œ (O(n log n))의 μ‹œκ°„ λ³΅μž‘λ„λ₯Ό μœ μ§€ν•©λ‹ˆλ‹€. λ°°μ—΄μ˜ 초기 μ •λ ¬ μƒνƒœμ— 관계없이 λ™μΌν•œ μž‘μ—… μˆ˜ν–‰λŸ‰μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help

Code Editor

Run
Generate

Execution Result