ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฐ์ํ
๋ณํฉ์ ๋ ฌ๋ ๋ํ์ ์ธ '๋ถํ ์ ๋ณต' ๋ฐฉ๋ฒ์ ์ฑํํ ์๊ณ ๋ฆฌ์ฆ
ํต ์ ๋ ฌ๊ณผ ๋์ผํ๊ฒ O(N * logN)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค. ํต์ ๋ ฌ์ ํผ๋ฒ๊ฐ์ ๋ฐ๋ผ ์ต์ ์ ๊ฒฝ์ฐ O(N^2)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง ์ ์๋๋ฐ ๋ณํฉ์ ๋ ฌ์ ์ ํํ ๋ฐ์ ์ฉ ๋๋๋ค๋ ์ ์์ ์ต์ ์ ๊ฒฝ์ฐ์๋ O(N * logN)์ ๋ณด์ฅํ๋ค.
์ผ๋จ ๋ฐ์ผ๋ก ๋๋๊ณ ๋์ค์ ํฉ์ณ์ ์ ๋ ฌํ์
๋ณํฉ์ ๋ ฌ์ ํญ์ ๋ฐ์ผ๋ก ๋๋๊ธฐ ๋๋ฌธ์ ํผ๋ฒ๊ฐ์ด ๋ฐ๋ก ์๋ค. ๋ฐ์ผ๋ก ์ชผ๊ฐ๊ธฐ ๋๋ฌธ์ ํญ์ logN์ ๋ณด์ฅํ๋ค. ํฉ์น ๋๋ 2์ ๋ฐฐ์๋งํผ ํฉ์น๋ค.
# ๋ณํฉ ์ ๋ ฌ (Merge sort)
# ์ ๋ ฌ๋ฐฐ์ด์ ๋ฐ๋์ ์ ์ญ ๋ณ์๋ก ์ ์ธํด์ค์ผํ๋ค. (์ถ๊ฐ์ ์ธ ๋ฐฐ์ด)
sortedArr = []
def merge(arr, start, middle, end): # start : m , end : n
i = start
j = middle + 1
k = start
# ์์ ์์๋๋ก ๋ฐฐ์ด์ ์ฝ์
# i๋ middle๊น์ง ๊ฐ๊ณ j๋ end๊น์ง ๊ฐ๋ค.
while i <= middle and j <= end:
# ํญ์ i๋ j๋ฅผ ๋น๊ตํด์ ๋ ์์ ๊ฐ์ k์ ๋ฃ๋๋ค.
if arr[i] <= arr[j]:
sortedArr[k] = arr[i]
i = i + 1
else:
sortedArr[k] = arr[j]
j = j + 1
k = k + 1
# ๋จ์ ๋ฐ์ดํฐ๋ ์ฝ์
if i > middle : # i ๊ฐ ๋จผ์ ๋๋ ๊ฒฝ์ฐ
for t in range(j, end + 1):
sortedArr[k] = arr[t]
k = k + 1
else: # j๊ฐ ๋จผ์ ๋๋๊ฒฝ์ฐ
for t in range(i, middle + 1):
sortedArr[k] = arr[t]
k = k + 1
# ์ ๋ ฌ๋ ๋ฐฐ์ด์ ์ฝ์
for t in range(start, end+1):
arr[t] = sortedArr[t]
def merge_sort(arr, start, end):
# ํฌ๊ธฐ๊ฐ 1๋ณด๋ค ํฐ ๊ฒฝ์ฐ
if start < end :
middle = (start + end) / 2
merge_sort(arr, start, middle)
merge_sort(arr, middle + 1, end)
merge(arr, start, middle, end)
return arr
test = [7,6,5,8,3,5,9,1]
print("์ ๋ ฌ๋ ๋ฐฐ์ด : {}".format(merge_sort(test, 0, len(test)-1)))
์ด ์ฝ๋ ์คํ์๋จ;
๋ฐ์ํ
'(๊ตฌ)์๋ฃ๊ตฌ์กฐ&์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ์ด์ฌ ๋๋ ์ ์ ๋ ฅ๋ฐ๊ธฐ (0) | 2020.06.17 |
---|---|
์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ (recursive algorithms) (0) | 2020.06.17 |
[๋ฐฑ์ค] Python - ์ ์ ๋ ฌํ๊ธฐ (0) | 2020.06.16 |
[Python] ํต ์ ๋ ฌ (Quick Sort) (0) | 2020.06.16 |
[Python] ์ฝ์ ์ ๋ ฌ (Insertion Sort) (0) | 2020.06.16 |
๋๊ธ
๊ณต์ง์ฌํญ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ
- Total
- Today
- Yesterday
๋งํฌ
TAG
- ๊ฒ์ํ๋ง๋ค๊ธฐ
- ๋ถํธ ์๋์์ฑ
- Java
- ์คํ๋ง๋ถํธ ์๋์์ฑ
- ๊ฒ์๋ฌผ์กฐํ
- ์ดํด๋ฆฝ์ค ํ๊ธ ์ธ์ฝ๋ฉ
- ๊ฒ์ํ ์ญ์
- ๊ฒ์ํ ์กฐํ
- tomcat์ค์น
- ๊ฐ๋ฐ
- ๊ฐ๋ฐํ๊ฒฝ๊ตฌ์ถ
- ์ดํด๋ฆฝ์ค ์ค์น
- ์๊ณ ๋ฆฌ์ฆ
- ๊ฒ์๋ฌผ ์ญ์
- ์ ์ฒด๊ฒ์๋ฌผ ์กฐํ
- ์๋ฃ๊ตฌ์กฐ
- mysql์ค์น
- ์จ๋ฆฌ์์ค
- typeAliases
- ์๋ฐ
- java ํ๊ฒฝ๋ณ์
- Algorithm
- ๋ณ๋ช ์ฒ๋ฆฌ
- java jdk ์ค์น
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
๊ธ ๋ณด๊ดํจ