์ตœ๋Œ€ 1 ๋ถ„ ์†Œ์š”

Radix_Sort (๊ธฐ์ˆ˜ ์ •๋ ฌ)

1. ๊ธฐ์ˆ˜ ์ •๋ ฌ์ด๋ž€?

์ฃผ์–ด์ง„ ๋ฐฐ์—ด์˜ ์š”์†Œ๋“ค์˜ ๊ฐ€์žฅ ๋‚ฎ์€ ์ž๋ฆฟ์ˆ˜๋ถ€ํ„ฐ ๋น„๊ตํ•˜๋ฉฐ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • stable counting sort๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•จ
  • ์žฅ์ : ๋น„๊ต์—ฐ์‚ฐ์„ ํ•˜์ง€ ์•Š์•„ ์ •๋ ฌ ์†๋„๊ฐ€ ๋น ๋ฆ„
  • ๋‹จ์ : ๋ฐ์ดํ„ฐ ์ „์ฒด ํฌ๊ธฐ์— ๊ธฐ์ˆ˜ ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๋งŒํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”

2. ๊ธฐ์ˆ˜ ์ •๋ ฌ์˜ ๋™์ž‘ ๊ณผ์ •

  1. 1~10 ๊นŒ์ง€์˜ ๋ฐฐ์—ด์„ ์„ ์–ธํ•œ๋‹ค. (A๋ผ๊ณ  ํ•˜์ž)
  2. ์ž…๋ ฅ๋ฐ›์€ ๋ฐ์ดํ„ฐ์˜ ์š”์†Œ๋“ค์— ๋Œ€ํ•˜์—ฌ ๊ฐ€์žฅ ๋‚ฎ์€ ์ž๋ฆฟ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐฐ์—ด-A์— ์ฐจ๋ก€๋Œ€๋กœ ์ €์žฅํ•œ๋‹ค. (์ด์ „ ๋ฐ์ดํ„ฐ์˜ ์š”์†Œ ์ˆœ์„œ๋ฅผ ์ง€ํ‚จ๋‹ค. (stable counting sort๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ))
  3. ๋‹ค์Œ์œผ๋กœ ๋‚ฎ์€ ์ž๋ฆฟ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์‹œ ๋ฐฐ์—ด-A์— ์ €์žฅํ•œ๋‹ค.
  4. 2, 3๋ฒˆ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

3. ์˜ˆ์ œ์ฝ”๋“œ

def radixSort(nums:List[int])->List[int]:  
largest_num = max(nums)  
digits = int(math.log10(largest_num))+1  
sorted = nums  
for digit in range(digits):  
    sorted = countingSortByDigit(nums=sorted,digit=digit)  
return sorted  

print(radixSort(nums=[391,582,50,924,8,192]))

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ