728x90

https://en.wikipedia.org/wiki/Timsort 

 

Timsort - Wikipedia

From Wikipedia, the free encyclopedia Hybrid sorting algorithm based on insertion sort and merge sort Timsort is a hybrid, stable sorting algorithm, derived from merge sort and insertion sort, designed to perform well on many kinds of real-world data. It w

en.wikipedia.org

 

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 ๋ณ„ ๋ธ”๋Ÿญ๋‹จ์œ„๋กœ ์ง‘์–ด๋„ฃ๋Š” ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•˜๋‹ค.
  • ๋‹จ์  : ์ž…๋ ฅ ํฌ๊ธฐ์˜ ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.
๋ฐ˜์‘ํ˜•
๋‹คํ–ˆ๋‹ค