728x90
https://en.wikipedia.org/wiki/Timsort
Timsort
- Peter McIlroy์ 1993๋ ๋ ผ๋ฌธ์ธ [Optimistic Sorting and Information Theoretic Complexity]์ ์ ์ฉํ๋ค.
- ๋ณํฉ ์ ๋ ฌ(ํฐ๋ ธ์ด๋ง์ด ๊ณ ์ํ O(nlogn)์ ๋ ฌ์ผ๋ก ์์ ์ ์ธ ํผํฌ๋จผ์ค๋ฅผ ๋ณด์ฌ์ค๋ค.) ๋ฐ ์ฝ์ ์ ๋ ฌ์์ ํ์๋ ๋ค์ํ ์ข ๋ฅ์ ์ค์ ๋ฐ์ดํฐ์์ ์ ๋ ฌ์ด ๋๋๋ก ์ค๊ณ๋์๋ค.
- Operation ์๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ๋ ๋ณํฉ ๊ธฐ์ค์ ๋ง์ถฐ ๋ฐ์ดํฐ๊ฐ ๋ณํฉ๋๋ค. ์ด๋ ๊ฒ ๋ณํฉ๋ ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ ์ถ์ถ์ ์ ์ฒด ๋ชฉ๋ก์ ์ ๋ ฌํ๋ ํ์๋ฅผ ์ค์ฌ์ค๋ค. ๋ฐ๋ผ์ ์ด๋ฏธ ๋ฐ์ดํฐ์ Index ์ ๋ณด๋ฅผ ์๊ณ ์๋ค๊ณ ๊ฐ์ ํ๊ณ ๋ถํฌ๋ฅผ ์ถ์ ํด ์ ๋ ฌ ํ ์ ์๋ ๊ฒ์ด๋ค.
- ํน์ง์ผ๋ก๋ ํฐ๋ ธ์ด๋ง์ ๋ณํฉ ์ ๋ ฌ์ ์ต์ ์ ๋ณต์ก๋๊ฐ O(nlogn)์์ ๋ฐํด ํ์ํธ๋ O(n)์ด๋ค.
- Merge space overhead
- ๋ ๊ฐ์ ์คํ [1, 2, 3, 6, 10] ๋ฐ [4, 5, 7, 9, 12, 14, 17]์ ๋ณํฉํด์ผ ํฉ๋๋ค. ๋ ์คํ์ ์ด๋ฏธ ๊ฐ๋ณ์ ์ผ๋ก ์ ๋ ฌ๋์ด ์์ต๋๋ค. ๋ ๋ฒ์งธ ์คํ์ ๊ฐ์ฅ ์์ ์์๋ 4์ด๊ณ ์์๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ฒซ ๋ฒ์งธ ์คํ์ ๋ค ๋ฒ์งธ ์์น์ ์ถ๊ฐํด์ผ ํฉ๋๋ค(์คํ์ ์ฒซ ๋ฒ์งธ ์์น๊ฐ 1์ด๋ผ๊ณ ๊ฐ์ ). ์ฒซ ๋ฒ์งธ ์คํ์ ๊ฐ์ฅ ํฐ ์์๋ 10์ด๋ฉฐ ์์๋ฅผ ์ ์งํ๋ ค๋ฉด ๋ ๋ฒ์งธ ์คํ์ ๋ค์ฏ ๋ฒ์งธ ์์น์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ [1, 2, 3]๊ณผ [12, 14, 17]์ ์ด๋ฏธ ์ต์ข ์์น์ ์์ผ๋ฉฐ ์์ ์ด๋์ด ํ์ํ ๋ฐ์ [6, 10]๊ณผ [4, 5, 7, 9]์ ๋๋ค. ์ด ์ง์์ ์ฌ์ฉํ๋ฉด ์์ ๋ฒํผ ํฌ๊ธฐ 4 ๋์ ํฌ๊ธฐ 2๋ง ํ ๋นํ๋ฉด ๋ฉ๋๋ค.
- min_Y_i max_Y_i max_X_i max_X_i part ๋ณ ๋ธ๋ญ๋จ์๋ก ์ง์ด๋ฃ๋ ๋ค๊ณ ์๊ฐํ๋ฉด ํธํ๋ค.
- ๋จ์ : ์ ๋ ฅ ํฌ๊ธฐ์ ๋งํผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ถ๊ฐ๋ก ์ฌ์ฉํด์ผํ๋ค.
๋ฐ์ํ
'๐ Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Python Interpreter Lock (a.k.a GIL) (0) | 2023.04.11 |
---|---|
[WARNING:torch.distributed.run] Setting OMP_NUM_THREADS environment variable for each process to be 1 in default, to avoid (0) | 2023.03.28 |
leetCode python code markdown ๋ณํ๊ธฐ (0) | 2023.02.27 |
python GPU memory print (0) | 2022.12.27 |
[python 3.8-] Print Format (0) | 2022.06.13 |