[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ธฐ์ˆ˜์ •๋ ฌ(Radix Sort)์ด๋ž€?

2022. 12. 20. 15:03ยท๐Ÿ“š ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜/์ •๋ ฌ ๋ฐ ํƒ์ƒ‰
728x90

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

  • ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ์š”์†Œ(Radix)๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ์‹
  • ๋ฐ์ดํ„ฐ์˜ ๊ฐ ์ž๋ฆฟ์ˆ˜๋ผ๋ฆฌ ๋น„๊ตํ•˜๋ฉด์„œ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ๊ฐ€์žฅ ์ž‘์€ ์ž๋ฆฟ์ˆ˜๋ถ€ํ„ฐ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ LSD(Least-Significant-Digit)์™€ ๊ฐ€์žฅ ํฐ ์ž๋ฆฟ์ˆ˜๋ถ€ํ„ฐ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ MSD(Most-Significant-Digit)๊ฐ€ ์žˆ๋‹ค.

 

๊ธฐ์ˆ˜์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณผ์ •

(8,2,7,3,5) ์˜ ๊ธฐ์ˆ˜์ •๋ ฌ

ํ•œ์ž๋ฆฌ์ˆ˜ ์ผ๋• ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์ด ์ธ๋ฑ์Šค๊ฐ€ ๋˜์–ด ๋ฐฐ์—ด์— ์ •๋ ฌ๋œ๋‹ค.


๋งŒ์•ฝ 2์ž๋ฆฌ ์ผ๋•? (28,93,39,81,62,72,38,26)

๋‚ฎ์€ ์ž๋ฆฌ์ˆ˜๋กœ ๋จผ์ € ๋ถ„๋ฅ˜ํ•œ ๋‹ค์Œ, ์ˆœ์„œ๋Œ€๋กœ ์ฝ์–ด์„œ ๋‹ค์‹œ ๋†’์€ ์ž๋ฆฌ์ˆ˜๋กœ ๋ถ„๋ฅ˜ํ•œ๋‹ค.


  1. ๋ฒ„์ผ“์€ ํ๋กœ ๊ตฌํ˜„
  2. ๋ฒ„์ผ“์˜ ๊ฐœ์ˆ˜๋Š” ํ‚ค์˜ ํ‘œํ˜„ ๋ฐฉ๋ฒ•๊ณผ ๋ฐ€์ ‘ํ•œ ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค.(์ด์ง„๋ฒ•2๊ฐœ, ์•ŒํŒŒ๋ฒณ26๊ฐœ, ์‹ญ์ง„๋ฒ•10๊ฐœ)
  3. ์ž๋ฆฌ์ˆ˜์— ๋”ฐ๋ผ ํ์— ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค.
  4. ๋ฒ„์ผ“์—์„œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ dequeueํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ๋กœ ํ•ฉ์นœ๋‹ค.
  5. ๋ฒ„์ผ“ ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต
#include <stdio.h>
#include <time.h>

#define BUCKETS 10
#define DIGITS 4
#define  SIZE 10

//ํ์ฝ”๋“œ์ƒ๋žต

void radix_sort(int list[], int n)
{
    int i, b, d, factor=1;
    QueueType queues[BUCKETS];

    for(b=0;b<BUCKETS;b++) init(&queues[b]);	// ํ๋“ค์˜ ์ดˆ๊ธฐํ™”

    for(d=0; d<DIGITS; d++){
        for(i=0;i<n;i++)				// ๋ฐ์ดํ„ฐ๋“ค์„ ์ž๋ฆฌ์ˆ˜์— ๋”ฐ๋ผ ํ์— ์ž…๋ ฅ
            enqueue( &queues[(list[i]/factor)%10], list[i]);

        for(b=i=0;b<BUCKETS;b++)			// ๋ฒ„์ผ“์—์„œ ๊บผ๋‚ด์–ด list๋กœ ํ•ฉ์นœ๋‹ค.
            while( !is_empty(&queues[b]) )
                list[i++] = dequeue(&queues[b]);
        factor *= 10;				// ๊ทธ ๋‹ค์Œ ์ž๋ฆฌ์ˆ˜๋กœ ๊ฐ„๋‹ค.
    }
}


int main(void)
{
    int list[SIZE];
    srand(time(NULL));
    for (int i = 0; i<SIZE; i++)      	// ๋‚œ์ˆ˜ ์ƒ์„ฑ ๋ฐ ์ถœ๋ ฅ 
        list[i] = rand() % 100;

    radix_sort(list, SIZE); // ๊ธฐ์ˆ˜์ •๋ ฌ ํ˜ธ์ถœ 
    for (int i = 0; i<SIZE; i++)
        printf("%d ", list[i]);
    printf("\n");
    return 0;
}

 

๊ธฐ์ˆ˜์ •๋ ฌ ์‹œ๊ฐ„๋ณต์žก๋„

  • n๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ, d๊ฐœ์˜ ์ž๋ฆฟ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ํ‚ค๋ฅผ ๊ธฐ์ˆ˜ ์ •๋ ฌํ•  ๊ฒฝ์šฐ, O(dn)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.
  • ํ•˜์ง€๋งŒ ์‹ค์ˆ˜, ํ•œ๊ธ€, ํ•œ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ํ‚ค๋Š” ์ •๋ ฌํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

728x90
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ“š ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜/์ •๋ ฌ ๋ฐ ํƒ์ƒ‰' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ •๋ ฌ ์‹œ๊ฐ„๋ณต์žก๋„ ๋น„๊ต
  • [์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ด๋ถ„ํƒ์ƒ‰(Binary Search)์ด๋ž€?
  • [์•Œ๊ณ ๋ฆฌ์ฆ˜] ํ€ต ์ •๋ ฌ(Quick Sort)์ด๋ž€?
  • [์•Œ๊ณ ๋ฆฌ์ฆ˜] ํ•ฉ๋ณ‘ ์ •๋ ฌ(Merge Sort)์ด๋ž€?
juno1105
juno1105
๊ณต๋ถ€ํ•˜๋Š” ๊ฒธ ํฌํด ๋ธ”๋กœ๊ทธ
  • juno1105
    @juno1105
    juno1105
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (89)
      • ๐Ÿ’ฌ ์ž์œ  (3)
      • ๐Ÿ“– ์–ดํ•™ ๊ณต๋ถ€ (0)
      • ๐Ÿ“” ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ (4)
      • ๐Ÿ›  ํ”„๋กœ๊ทธ๋žจ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ๋ฒ• (1)
      • ๐Ÿ“š ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (53)
        • ์Šคํƒ (4)
        • ํ (4)
        • ์ •๋ ฌ ๋ฐ ํƒ์ƒ‰ (17)
        • ๋ฆฌ์ŠคํŠธ (5)
        • ํ•ด์‹œ (1)
        • ํŠธ๋ฆฌ (8)
        • ํž™ (2)
        • ๊ทธ๋ž˜ํ”„ (12)
      • ๐Ÿ’ป ์ปดํ“จํ„ฐ ๊ตฌ์กฐ (0)
      • ๐Ÿšฅ ๋…ผ๋ฆฌํšŒ๋กœ (8)
      • ๐Ÿ”ฐ ๋ฐฑ์ค€ (20)
        • ํ, ์Šคํƒ, ๋ฑ (0)
        • DFS ์™€ BFS (3)
        • ๊ทธ๋ฆฌ๋”” (0)
        • ๋™์ ๊ณ„ํš๋ฒ• 1 (16)
        • ๋™์ ๊ณ„ํš๋ฒ• 2 (0)
        • ์ตœ๋‹จ ๊ฒฝ๋กœ (0)
        • ํŠธ๋ฆฌ (0)
        • ๋ฐฑํŠธ๋ž˜ํ‚น (0)
        • ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ (0)
        • ์ง‘ํ•ฉ๊ณผ ๋งต (1)
      • ๐ŸŒˆ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (0)
      • ๐Ÿ“ฑ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

    • โœจ์ž๋ฃŒ๊ตฌ์กฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ปค๋ฆฌํ˜๋Ÿผโœจ
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋น…์˜คํ‘œ๊ธฐ๋ฒ•
    ์ •๋ ฌ ์ตœ์•…์˜ ๊ฒฝ์šฐ
    ํ† ์ต 900์ 
    ์ •๋ ฌ
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ํ† ์ต 900
    ํ† ์ต
    ๊ทธ๋ž˜ํ”„ํƒ์ƒ‰
    ์ตœ๋‹จ๊ฒฝ๋กœ
    ํ† ์ต 900์ ๋Œ€
    ์ •๋ ฌ ์ตœ์„ ์˜ ๊ฒฝ์šฐ
    ํ† ์ต 920์ 
    ์‹œ๊ฐ„๋ณต์žก๋„
    ํ† ์ต 910์ 
    ํ† ์ต 950์ 
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
juno1105
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ธฐ์ˆ˜์ •๋ ฌ(Radix Sort)์ด๋ž€?
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”