Post

์ •๋ ฌ ๋ฌธ์ œ

์ •๋ ฌ ๋ฌธ์ œ

๐Ÿฝ ๋ฒ„๋ธ” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ธ์ ‘ํ•œ ๋‘ ์›์†Œ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ์ •๋ ฌ
  • ๋ฌธ์ œ: ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ n๊ฐœ์˜ ํ‚ค ์ •๋ ฌ
  • ์ž…๋ ฅ: ์–‘์˜ ์ •์ˆ˜ n, ํ‚ค์˜ ๋ฐฐ์—ด S[1..n]
  • ์ถœ๋ ฅ: ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ํ‚ค์˜ ๋ฐฐ์—ด S[1..n]


์˜์‚ฌ์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
void bubbleSort(int n, keytype &S[]) {
    index i, j;
    for(i = 1; i <= n; i++) {
        for(j = 1; j <= n-i; j++) {
            if(S[j] > S[j+1])
                swap S[j] and S[j+1];
        }
    }
}
  • ํฐ ์ˆ˜์ผ ๊ฒฝ์šฐ ํ•œ ์นธ์”ฉ ๋’ค๋กœ


๋ฒ„๋ธ” ์ •๋ ฌ ๋ถ„์„ - ๋ชจ๋“  ๊ฒฝ์šฐ

  • ๋‹จ์œ„ ์—ฐ์‚ฐ: ๋น„๊ต
ijํšŸ์ˆ˜
11..n-1
21..n-2
โ€ฆย ย 
n1..0
  • $T(n) = \frac{n(n-1)}{2}$


๐Ÿฝ ์‚ฝ์ž… ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์— ํ•ญ๋ชฉ์„ ๋ผ์›Œ ๋„ฃ์Œ์œผ๋กœ์จ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ๋ฌธ์ œ: ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ n๊ฐœ์˜ ํ‚ค ์ •๋ ฌ
  • ์ž…๋ ฅ: ์–‘์˜ ์ •์ˆ˜ n, ํ‚ค์˜ ๋ฐฐ์—ด S[1..n]
  • ์ถœ๋ ฅ: ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ํ‚ค์˜ ๋ฐฐ์—ด S[1..n]


์˜์‚ฌ์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
void insetionSort(int n, keytype S[]) {
    index i, j;
    keytype x;
    for(i = 2; i <= n; i++) {
        x = S[i];
        j = i - 1;
        while(j > 0 && S[j] > x) {
            S[j+1] = S[j];
            j--;
        }
        S[j+1] = x;
    }
}


์‚ฝ์ž… ์ •๋ ฌ ๋ถ„์„ - ์ตœ์•…์˜ ๊ฒฝ์šฐ

  • ๊ธฐ๋ณธ ์—ฐ์‚ฐ: ๋น„๊ต
  • i๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, while loop์—์„œ ์ตœ๋Œ€ i-1๋ฒˆ์˜ ๋น„๊ต ์ด๋ฃจ์–ด์ง
  • $W(n) = \sum_{i=2}^{n} (i-1) = \frac{n(n-1)}{2}$


ํ‰๊ท ์˜ ๊ฒฝ์šฐ

  • i๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ x๊ฐ€ ์‚ฝ์ž…๋  ์ˆ˜ ์žˆ๋Š” ์žฅ์†Œ: i๊ฐœ
์‚ฝ์ž…ํ•  ์žฅ์†Œ์˜ ์ธ๋ฑ์Šค๋น„๊ต ํšŸ์ˆ˜
i1
i-12
โ€ฆโ€ฆ
2i-1
1i-1
  • x๋ฅผ ์‚ฝ์ž…ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋น„๊ต ํšŸ์ˆ˜
    $1\frac{1}{i} + 2\frac{1}{i} + โ€ฆ + (i-1)\frac{1}{i} + (i-1)\frac{1}{i} = \frac{1}{i} \sum_{k=1}^{i-1} k + \frac{i-1}{i} = \frac{(i-1)i}{2i} + \frac{i-1}{i} = \frac{i+1}{2} - \frac{1}{i}$

  • ์ •๋ ฌ์— ํ•„์š”ํ•œ ํ‰๊ท  ๋น„๊ต ํšŸ์ˆ˜
    $\sum_{i=2}^{n} (\frac{i+1}{2} - \frac{1}{i}) โ‰ˆ \frac{(n+4)(n-1)}{4} - ln^n โ‰ˆ \frac{n^2}{4} โˆˆ ฮ˜(n^2)$


๐Ÿค ๊ตํ™˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ๋ฌธ์ œ: n๊ฐœ์˜ ์ˆ˜๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด S ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
  • ์ž…๋ ฅ: ์–‘์˜ ์ •์ˆ˜ n, ๋ฐฐ์—ด S
  • ์ถœ๋ ฅ: ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐฐ์—ด S


์˜์‚ฌ์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void exchangeSort(int n, number S[]) {
    index i, j;
    for(i = 1; i <= n; i++) {
        for(j = i+1; j <= n; j++)
            if(S[j] < S[i]) swap S[i] and S[j];
    }
}

swap(index i, j, number &S[]) {
    number temp;
    temp = S[i];
    S[i] = S[j];
    S[j] = temp;
}


์‹œ๊ฐ„๋ณต์žก๋„

  • ๋‹จ์œ„ ์—ฐ์‚ฐ: ์กฐ๊ฑด๋ฌธ (S[j], S[i] ๋น„๊ต)
  • ๋ชจ๋“  ๊ฒฝ์šฐ ๋ถ„์„
    • j-loop๊ฐ€ ์ˆ˜ํ–‰๋  ๋•Œ๋งˆ๋‹ค ์กฐ๊ฑด๋ฌธ 1๋ฒˆ์”ฉ ์ˆ˜ํ–‰
    • ์กฐ๊ฑด๋ฌธ ์ด ์ˆ˜ํ–‰ ํšŸ์ˆ˜
      • i=1, 2, 3, .., n-1 ์— ๋”ฐ๋ผ
      • j-loop n-1, n-2, n-3, โ€ฆ, 1 ๋ฒˆ ์ˆ˜ํ–‰
    • $T(n) = (n-1) + (n-2) + โ€ฆ + 1 = \frac{(n-1)n}{2}$
  • ์ตœ์•…์˜ ๊ฒฝ์šฐ
    • ๊ธฐ๋ณธ ์—ฐ์‚ฐ: ํ• ๋‹น
    • 1๋ฒˆ ๊ตํ™˜ํ•˜๋Š”๋ฐ 3๋ฒˆ ์ง€์ •
    • $W(n) = 3(n-1) + 3(n-2) + โ€ฆ + 3 = \frac{3n(n-1)}{2}$
  • ํ‰๊ท ์˜ ๊ฒฝ์šฐ
    • ๊ธฐ๋ณธ ์—ฐ์‚ฐ: ํ• ๋‹น
    • i์™€ j๋ฅผ ๋น„๊ตํ–ˆ์„ ๋•Œ i๊ฐ€ ํด ํ™•๋ฅ ์€ $\frac{1}{2}$, i๊ฐ€ ํด ๋•Œ ์ง€์ •์ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ
    • ์ง€์ •์˜ ํšŸ์ˆ˜: $\frac{3(n-1)}{2}$
    • $A(n) = \frac{3(n-1)}{2} + \frac{3(n-2)}{2} + โ€ฆ + \frac{3}{2} = \frac{3n(n-1)}{4}$


๐Ÿฝ ์„ ํƒ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ๋ฌธ์ œ: ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ n๊ฐœ์˜ ํ‚ค ์ •๋ ฌ
  • ์ž…๋ ฅ: ์–‘์˜ ์ •์ˆ˜ n, ํ‚ค์˜ ๋ฐฐ์—ด S[1..n]
  • ์ถœ๋ ฅ; ๋น„๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ํ‚ค์˜ ๋ฐฐ์—ด S[1..n]


์˜์‚ฌ์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void selectionSort(int n, keytype S[]) {
    index i, j, smallest;
    for(i = 1; i <= n-1; i++) {
        smallest = i;
        for(j = i+1; j <= n; j++) {
            if(S[j] < S[smallest])   // ๊ธฐ๋ณธ์—ฐ์‚ฐ: ๋น„๊ต
                smallest = j;
        }
        exchange S[i] and S[smallest];   // ํ• ๋‹น
    }
}

exchange(index i, j, number &S[]) {
    number temp;
    temp = S[i];
    S[i] = S[j];
    S[j] = temp;
}


์„ ํƒ ์ •๋ ฌ ๋ถ„์„ - ๋ชจ๋“  ๊ฒฝ์šฐ

  • ๊ธฐ๋ณธ ์—ฐ์‚ฐ: ๋น„๊ต
iํšŸ์ˆ˜
1n-1
2n-2
โ€ฆย 
n-11
  • ๋น„๊ต ํšŸ์ˆ˜์˜ ํ•ฉ: $\frac{n(n-1)}{2}$
  • $T(n) = \frac{n^2}{2}$


  • ๊ธฐ๋ณธ ์—ฐ์‚ฐ: ํ• ๋‹น
    • 1๋ฒˆ ๊ตํ™˜ํ•˜๋Š”๋ฐ 3๋ฒˆ ์ง€์ •
  • $T(n) = 3(n-1)$


๐Ÿฝ ํž™ ์ •๋ ฌ

์ตœ๋Œ€ ํž™ Max Heap

  • ์ตœ๋Œ€ ํŠธ๋ฆฌ
    • ์ด์ง„ ํŠธ๋ฆฌ์—์„œ ๊ฐ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์ด ๊ทธ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ํฐ ํŠธ๋ฆฌ
  • ์ตœ๋Œ€ ํž™
    • ์ตœ๋Œ€ ํŠธ๋ฆฌ์ด๋ฉด์„œ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ
    • ์ตœ๋Œ€ ํŠธ๋ฆฌ์—์„œ ๋ฃจํŠธ๋Š” ๊ฐ€์žฅ ํฐ ํ‚ค ๊ฐ’์„ ๊ฐ€์ง
    • ๊ฐ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์€ ๊ทธ ๋…ธ๋“œ์˜ ์ž์‹ ๋…ธ๋“œ์— ์ €์žฅ๋œ ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์Œ


  • ์‚ฝ์ž… ์—ฐ์‚ฐ
    • ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ ๋…ธ๋“œ๋Š” ํŠธ๋ฆฌ์˜ ๋งˆ์ง€๋ง‰ ์œ„์น˜์— ์‚ฝ์ž…
    • ์ตœ๋Œ€ ํŠธ๋ฆฌ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ ๋…ธ๋“œ๋Š” ์ƒ์œ„ ๋…ธ๋“œ์™€ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋น„๊ตํ•˜์—ฌ ์•Œ๋งž์€ ์œ„์น˜ ์ฐพ์Œ
      Algorithm Image


  • ์‚ญ์ œ ์—ฐ์‚ฐ
    • ์ตœ๋Œ€ ํž™์—์„œ์˜ ์‚ญ์ œ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ์˜ ์‚ญ์ œ
    • ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ return
    • ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๋ฅผ ๋ฃจํŠธ๋กœ ๊ฐ€์ ธ์™€์„œ ์ตœ๋Œ€ ํž™์˜ ํŠน์„ฑ์„ ๋งŒ์กฑํ•˜๋„๋ก ์ œ ์œ„์น˜๋ฅผ ์ฐพ์•„์คŒ shiftdown
      Algorithm Image


ํž™ ์ •๋ ฌ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

  • shiftdown: ํž™์˜ ํŠน์„ฑ์„ ๋งŒ์กฑํ•˜๋„๋ก ํ‚ค ๊ฐ’์„ ์•„๋ž˜๋กœ ๋‚ด๋ฆฌ๋Š” ์—ฐ์‚ฐ
  • root: ๋ฃจํŠธ ํ‚ค๋ฅผ returnํ•˜๊ณ , ๋ฐ”๋‹ฅ ๋…ธ๋“œ๋ฅผ ๋ฃจํŠธ๋กœ ์˜ฎ๊ฒจ shiftdownํ•˜์—ฌ ํž™์„ ๋ณต์›ํ•จ (์‚ญ์ œ ์—ฐ์‚ฐ)
  • removekeys: ํž™์˜ ํ‚ค๋ฅผ ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ๋ฐฐ์—ด์— ์œ„์น˜์‹œํ‚ค๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • makeheap: ๋ณธ์งˆ์ ์œผ๋กœ ์™„์ „ํ•œ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ํž™ ํŠธ๋ฆฌ๋กœ ๊ตฌ์„ฑ


shiftdown()

  • ํž™ ๊ตฌ์กฐ ํŠน์„ฑ ๋งŒ์กฑํ•˜๋„๋ก ๊ตฌ์„ฑ

Algorithm Image


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
void shiftdown(heap& H, index i) {    // i๋Š” ๋…ธ๋“œ ๋ฒˆํ˜ธ
    index parent, largerchild;
    keytype shiftkey;
    bool spotfound;
    shiftkey = H.S[i];
    parent = i;
    spotfound = false;
    while(2*parent <= H.heapsize && !spotfound) {  // ์ž์‹ ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด
        // ์ž์‹ ๋…ธ๋“œ๊ฐ€ 2๊ฐœ๋ผ๋ฉด, ์™ผ์ชฝ/์˜ค๋ฅธ์ชฝ ์ค‘ ์–ด๋А ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋” ํฐ์ง€ ํŒ๋ณ„
        if(2*parent < H.heapsize && H.S[2*parent] < H.S[2*parent+1])   
            largerchild = 2*parent + 1;   // ์˜ค๋ฅธ์ชฝ
        else largerchild = 2*parent;      // ์™ผ์ชฝ

        if(shiftkey < H.S[largerchild]) {
            H.S[parent] = H.S[largerchild];
            parent = largerchild;
        }
        else spotfound = true;
    }
    H.S[parent] = shiftkey;
}

struct heap{
    keytype S[1..n];
    int heapsize;
};
  • ์ž์‹ ๋…ธ๋“œ index: ์ ์–ด๋„ ๋ถ€๋ชจ ๋…ธ๋“œ์˜ 2๋ฐฐ


makeheap()

  • ํž™ ๊ตฌ์กฐ ๊ตฌ์„ฑ

Algorithm Image


1
2
3
4
5
6
void makeheap(int n, heap& H) {
    index i;
    H.heapsize = n;
    for(i = โŒŠn/2โŒ‹; i >= 1; i--) 
        shiftdown(H, i);
}


root()

  • ํž™ ๊ตฌ์กฐ์˜ ๋ฃจํŠธ ๊ฐ’ ์–ป๊ธฐ & ํž™ ๋ณต์›
1
2
3
4
5
6
7
8
keytype root(heap& H) {
    keytype keyout;
    keyout = H.S[1];
    H.S[1] = H.S[heapsize];      // ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๋ฅผ ๋ฃจํŠธ๋กœ
    H.heapsize = H.heapsize - 1;
    shiftdown(H, 1);             // ํž™ ํŠธ๋ฆฌ ํŠน์„ฑ ๋งŒ์กฑํ•˜๋„๋ก ๊ตฌ์„ฑ
    return keyout;
}


removekeys()

  • ์ •๋ ฌ
  • ํž™ ๊ตฌ์กฐ์˜ ๋ฃจํŠธ๋ฅผ ๋ฐฐ์—ด๋กœ ์ด๋™
1
2
3
4
5
void removekeys(int n, heap H, keytype S[]) {
    index i;
    for(i = n; i >= 1; i--)
        S[i] = root(H);
}


ํž™ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

1
2
3
4
void heapSort(int n, heap& H, keytype S[]) {
    makeheap(n, H);        // shiftdown()
    removeheap(n, H, S);   // shiftdown()
}
  • makeheap๊ณผ removekeys ๋ชจ๋‘ shiftdown ํ˜ธ์ถœํ•˜๋ฏ€๋กœ ๋”ฐ๋กœ ๋ถ„์„


makeheap ์‹œ๊ฐ„๋ณต์žก๋„ - ์ตœ์•…์˜ ๊ฒฝ์šฐ

  • ๋‹จ์œ„ ์—ฐ์‚ฐ: shiftdown ํ”„๋กœ์‹œ์ €์—์„œ์˜ ํ‚ค ๋น„๊ต
  • $n = 2^k (= 2^d)$๋ผ ๊ฐ€์ •
depthnode ์ˆ˜ํ‚ค๊ฐ€ shift๋˜๋Š” ์ตœ๋Œ€ ํšŸ์ˆ˜
0$2^0$d-1
1$2^1$d-2
......
j$2^j$d-j-1
......
d-2$2^{d-2}$1
d-1$2^{d-1}$0
  • ์ตœ๋Œ€ ํšŸ์ˆ˜์˜ ํ•ฉ
    $\sum_{j=0}^{d-1} 2^j (d-j-1)$
    = $2^d - d - 1$


  • ๊นŠ์ด๊ฐ€ d์ธ ๊ฒฝ์šฐ shiftdown ๋  ํšŸ์ˆ˜์˜ ์ƒํ•œ๊ฐ’์ธ d๋ฅผ ๋”ํ•˜๋ฉด $2^d - 1$์ด ๋จ
  • ํ•œ ๋ฒˆ shiftdown๋  ๋•Œ๋งˆ๋‹ค 2๋ฒˆ์”ฉ ๋น„๊ต
  • ์‹ค์ œ ๋น„๊ต ํšŸ์ˆ˜: $2(n-1)$


removekeys ์‹œ๊ฐ„๋ณต์žก๋„ - ์ตœ์•…์˜ ๊ฒฝ์šฐ

  • $n = 2^k (= 2^d)$๋ผ ๊ฐ€์ •
  • ์ด shift ํšŸ์ˆ˜: $\sum_{j=0}^{d-1} j2^j = nlg^n - 2n + 2$
  • ํ•œ ๋ฒˆ shift๋  ๋•Œ๋งˆ๋‹ค 2๋ฒˆ์”ฉ ๋น„๊ตํ•˜๋ฏ€๋กœ ์‹ค์ œ ๋น„๊ต ํšŸ์ˆ˜: $2nlg^n - 4n + 4$
  • ๋”ฐ๋ผ์„œ, ์ตœ์•…์˜ ๊ฒฝ์šฐ: $W(n) โˆˆ ฮ˜(nlg^n)$


ํž™ ์ •๋ ฌ ์‹œ๊ฐ„๋ณต์žก๋„

  • makeheap ์‹œ๊ฐ„๋ณต์žก๋„ + removekeys ์‹œ๊ฐ„๋ณต์žก๋„
  • ์ตœ์•…์˜ ๊ฒฝ์šฐ: $W(n) โˆˆ ฮ˜(nlg^n)$


๐Ÿฝ ๊ธฐ์ˆ˜ ์ •๋ ฌ RADIX

  • d ๊ฐœ์˜ ์ˆซ์ž๋กœ ํ‘œํ˜„ํ•œ k์ง„๋ฒ• ์ฒด๊ณ„์˜ ์ˆ˜๋ฅผ ํ‚ค๋กœ ํ‘œํ˜„ํ•˜์—ฌ ๊ฐ ์ˆซ์ž์— ๋”ฐ๋ผ ํ‚ค๋ฅผ ๋ถ„๋ฐฐํ•˜๋Š” ๋ฐฉ์‹

Algorithm Image


๊ฐ ํ‚ค์˜ ๊ฐ€์žฅ ์™ผ์ชฝ ์ˆซ์ž๋ถ€ํ„ฐ ๊ธฐ์ค€์œผ๋กœ ์‚ผ๋Š” ๊ฒฝ์šฐ

Algorithm Image


์˜ค๋ฅธ์ชฝ ์ˆซ์ž๋ถ€ํ„ฐ ๋ถ„๋ฐฐ์˜ ๊ธฐ์ค€์œผ๋กœ ์‚ผ๋Š” ๊ฒฝ์šฐ

Algorithm Image


์˜์‚ฌ์ฝ”๋“œ

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
void radixsort(node_pointer& masterlist, int numdigits) {
    // globally node_pointer list[0.9];
    index i;
    for(i = 1; i <= numdigits; i++) {
        distribute(masterlist, i);
        coalesce(masterlist);
    }
}

void distribute(node_pointer& masterlist, index i) {
    index j;
    node_pointer p;
    for(j = 0; j <= 9; j++) {
        list[j] = NULL;
    }
    p = masterlist;
    while(p != NULL) {
        j = p -> key์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ i๋ฒˆ์งธ ์ˆซ์ž๊ฐ’;
        p๋ฅผ list[j]์˜ ๋์— ๋งํฌ;
        p = p -> link;
    }       
}

void coalesce(node_pointer& masterlist) {
    index j;
    masterlist = NULL;
    for(j = 0; j <= 9; j++)
        list[j]์— ์žˆ๋Š” ๋งˆ๋””๋“ค์„ masterlist์˜ ๋์— ๋งํฌ;
}


๊ธฐ์ˆ˜ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„์„ - ๋ชจ๋“  ๊ฒฝ์šฐ

  • ๋‹จ์œ„ ์—ฐ์‚ฐ: ๋ญ‰์น˜์— ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์—ฐ์‚ฐ (๋งํฌ ์—ฐ์‚ฐ)
  • ์ž…๋ ฅ ํฌ๊ธฐ: ์ •๋ ฌํ•˜๋Š” ์ •์ˆ˜ ๊ฐœ์ˆ˜ n, ๊ฐ ์ •์ˆ˜๋ฅผ ์ด๋ฃจ๋Š” digit์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜ numdigits
  • ๋ชจ๋“  ๊ฒฝ์šฐ ์‹œ๊ฐ„๋ณต์žก๋„
    $T(n) = numdigits(n + 10) โˆˆ ฮ˜(numdigits * n)$
This post is licensed under CC BY 4.0 by the author.