본문 바로가기
반응형

프로그래머의 길157

heap 정렬 u 히프(heap)를 이용해 정렬 ・ 히프 : 우선순위 큐의 일종 Ø 정렬할 원소를 모두 공백 히프에 하나씩 삽입 Ø 한 원소씩 삭제 →제일 큰 원소가 삭제됨 Ø 이 원소를 리스트의 뒤에서부터 차례로 삽입 Ø 오름차순으로 정렬된 리스트를 생성 HeapSort(a[]) n ← a.length - 1; // n은 히프 크기(원소의 수) // a[0]은 사용하지 않고 a[1 : n]의 원소를 오름차순으로 정렬 for (i ← n/2; i ≥ 1; i ← i-1) do // 배열 a[]를 히프로 변환 heapify(a, i, n); // i는 내부 노드 for (i ← n-1; i ≥ 1; i ← i-1) do { // 배열 a[]를 오름차순으로 정렬 temp ← a[1]; // a[1]은 제일 큰 원소 a[1.. 2007. 3. 13.
함수 포인터 & void 포인터 변수 & typedef @ 함수 포인터 #include int sum(int a, int b); void func(int (*fp)(int p, int q)); int main() { func(sum); return 0; } int sum(int a, int b) // 내가 남에게 보여주고 싶지 않은 소스 { return a+b; } //////////////////////////////////////////////////// 상대방이 사용하는 소스 void func(int (*fp)(int p, int q)) { int a, b, res; scanf("%d%d", &a, &b); res=fp(a, b); // 내가 곱샘으로 바꾼다면 곱셈 연산을 실행한다. printf("%d\n", res); } @ void형 포인터 void.. 2007. 3. 13.
2차원 배열 처럼 사용할 수 있는 배열과 포인터형 배열의 조합 // 2차원 배열 처럼 사용할 수 있는 // 배열과 포인터 배열의 조합 #include int main() { int a1[4]={1, 2, 3, 4}; int a2[4]={5, 6, 7, 8}; int a3[4]={9, 10, 11, 12}; int *ap[3]={a1, a2, a3}; printf("%d", ap[1][2]); // 7이 출력된다. return 0; } 참고 : 배열 초기화 방법 char fruit[3][80] = {"apple", "banana", "kiwi"}; char *sp[3] = {fruit[0], fruit[1], fruit[2]}; char *fruit_point[3] = {"apple", "banana", "kiwi"}; // 자료 수정 불가 포인터형 배열을 매개변수로.. 2007. 3. 12.
2차원 배열 매개변수로 받는 방법 #include void func(int (*ar)[3], int size) // 2차원 배열을 받는 함수 { int i,j; for (i=0;i 2007. 3. 9.
extern, static 이란? ------- 1.c #include int a; // a를 선언 void sam(); // 함수 선언 void main() { a = 10; printf("%d", a); sam(); printf("%d", a); // 10이 출력? 20이 출력? } -------- 2.c int a; void sam() { a = 20; } 위와 같은 분할 컴파일의 경우 변수 a가 중복되기 때문에 에러가 발생한다. 그렇다고 2.c 에 외부 변수가 없다면 또한 에러가 발생한다. 두 파일에서 같은 변수로 인식을 하고 싶다면 extern int a; 라고 선언을 해주면 된다. 하지만 비주얼 C 에서는 없어도 알아서 extern을 붙여서 프로그램이 이상없이 돌아간다. 그렇지만 붙여주는 습관을 들여라~ extern int a.. 2007. 3. 9.
초보자들이 실수하는 getchar() 바로 알기 #include int main(){            int input_char=0;   while(1)           {                          printf("Input character:");                          input_char = getchar();                          if((input_char == 'y') || (input_char == 'Y'))              puts("OK, 'y' input");                          else                                       puts("NO");            }           return 0; } .. 2007. 3. 7.
반응형