§1 플로이드 표본 추출 알고리즘 소개 1 1. 소개.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
⟨ 집합 정의 2⟩
⟨ 함수들 4⟩
⟨ 플로이드 알고리즘 8⟩ main (int argc , char ∗argv [ ]) {
int n; /∗ 모집단의 크기 ∗/
int m; /∗ 표본의 크기 ∗/
⟨ M 과 N 의 값을 결정하라 3⟩;
srand ((unsigned int) time ((time t ∗) Λ));
floyd (n, m); /∗ 플로이드의 표본 추출 알고리즘 ∗/
print set (set ); /∗ 표본들을 정렬하여 출력하라 ∗/
printf ("\n");
return 0;
}
2.
⟨ 집합 정의 2⟩ ≡
typedef struct node{ int value ;
struct node ∗left ; struct node ∗right ; } node t;
node t ∗set ;
이 코드는1번 마디에서 사용된다.
2 소개 플로이드 표본 추출 알고리즘 §3 3.
⟨ M 과 N 의 값을 결정하라 3⟩ ≡ if (3̸= argc) {
fprintf (stderr , "Usage:␣%s␣N␣M\n", argv [0]);
exit (1);
}
n = atoi (argv [1]); /∗ 모집단의 크기 ∗/
m = atoi (argv [2]); /∗ 표본의 크기 ∗/
if (n < m) {
fprintf (stderr , "M␣should␣not␣exceed␣N.\n");
exit (1);
}
if (n≤ 0 ∨ m ≤ 0) {
fprintf (stderr , "M,␣N␣should␣be␣positive.\n");
exit (1);
}
이 코드는1번 마디에서 사용된다.
4.
⟨ 함수들 4⟩ ≡
node t ∗alloc(int n) { node t ∗t;
if (Λ≡ (t = malloc(sizeof (node t)))) {
fprintf (stderr , "can␣not␣alloc␣memory␣for␣tree␣node.\n");
exit (1);
}
t⃗value = n;
t⃗left = t⃗right = Λ;
return t;
}
5,6,7번 마디도 살펴보라.
이 코드는1번 마디에서 사용된다.
§5 플로이드 표본 추출 알고리즘 소개 3 5.
⟨ 함수들 4⟩ +≡
int insert into set (node t ∗∗set , int n) {
if (Λ≡ ∗set ) {
∗set = alloc(n);
return 1;
}
if (n≡ (∗set )⃗value) return 0;
if (n < (∗set )⃗value)
return insert into set (&(∗set )⃗left , n);
else
return insert into set (&(∗set )⃗right , n);
}
6.
⟨ 함수들 4⟩ +≡
void print set (node t∗set ) {
if (Λ≡ set ) return;
print set (set⃗left );
printf ("%d␣", set⃗value );
print set (set⃗right );
}
7.
⟨ 함수들 4⟩ +≡
int rand int (int m, int n) {
return m + rand ( )/(RAND_MAX/(n− m + 1) + 1);
}
4 플로이드 알고리즘 플로이드 표본 추출 알고리즘 §8
8. 플로이드 알고리즘.
⟨ 플로이드 알고리즘 8⟩ ≡ void floyd (int n, int m) {
int j;
set = Λ; /∗ 집합 초기화 ∗/
for (j = n− m + 1; j ≤ n; j++) { int t = rand int (1, j);
if (¬insert into set (&set , t)) insert into set (&set , j);
} }
이 코드는1번 마디에서 사용된다.
§9 플로이드 표본 추출 알고리즘 찾아보기 5
9. 찾아보기.
alloc : 4, 5.
argc : 1, 3.
argv : 1, 3.
atoi : 3.
exit : 3, 4.
floyd : 1, 8.
fprintf : 3, 4.
insert into set : 5, 8.
j: 8.
left : 2, 4, 5, 6.
m: 1, 7, 8.
main : 1.
malloc : 4.
n: 1, 4, 5, 7, 8.
node: 2.
node t: 2, 4, 5, 6.
print set : 1, 6.
printf : 1, 6.
rand : 7.
rand int : 7, 8.
RAND_MAX: 7.
right : 2, 4, 5, 6.
set : 1, 2, 5, 6, 8.
srand : 1.
stderr : 3, 4.
t: 4, 8.
time : 1.
value : 2, 4, 5, 6.
6 마디 목차 플로이드 표본 추출 알고리즘
⟨ 집합 정의 2⟩ 1번 마디에서 사용된다.
⟨ 플로이드 알고리즘 8⟩ 1번 마디에서 사용된다.
⟨ 함수들 4,5,6,7⟩ 1번 마디에서 사용된다.
⟨ M 과 N 의 값을 결정하라 3⟩ 1번 마디에서 사용된다.
플로이드 표본 추출 알고리즘
마디 쪽
소개 . . . 1 1 플로이드 알고리즘 . . . 8 4 찾아보기 . . . 9 5