programming/c

qsort()

qsort() C표준 라이브러리에 포함되어 있는 퀵 소트 기반 정렬 함수 void qsort(void *base, size_t num, size_t size, int (*compar)(const void *, const void *)); base : 정렬할 배열 또는 시작주소를 가리키는 포인터 num : 배열 요소 개수 size : 각 요소의 크기, ex) sizeof(int) compar : 비교 함수 포인터 #include #include int compare(const void* a, const void* b) { int int_a = *((int*)a); int int_b = *((int*)b); // 오름차순 : int_a - int_b; // 내림차순 : int_b - int_a; return..

programming/c 2023.10.01

배열 길이

배열의 길이 전체 배열 크기를 요소 하나의 크기로 나누면 배열의 길이를 알 수 있다. #include int main(){ int arr[] = {1, 2, 3, 4, 5, 100}; printf("%d\n", sizeof(arr)); // 배열이 메모리 상에서 차지하고 있는 용량 // int : 4 byte * 6개 = 24 printf("%d\n", sizeof(arr) / sizeof(arr[0])); // 배열의 길이 // 요소 하나 : 4byte // 전체 배열을 요소 하나로 나누면 길이 계산 // 출력 결과 : 24 / 4 = 6 return 0; } 매개변수 배열의 길이 배열을 함수의 파라미터로 넘기면 배열의 주소를 넘기게 된다. 함수에 입력된 arr 배열은 주소로 사용되어 주소 크기인 2가..

programming/c 2023.04.17

[BAEKJOON] 알고리즘 수업 - 병합 정렬 1(24060)

문제 https://www.acmicpc.net/problem/24060 24060번: 알고리즘 수업 - 병합 정렬 1 첫째 줄에 배열 A의 크기 N(5 ≤ N ≤ 500,000), 저장 횟수 K(1 ≤ K ≤ 108)가 주어진다. 다음 줄에 서로 다른 배열 A의 원소 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 109) www.acmicpc.net 문제풀이 병합정렬 코드를 구현하고, 임시배열 리스트를 배열에 복사할 때마다 count 변수를 통해 저장 횟수를 센다. count와 K가 같을 때 저장되는 수를 출력하고, 마지막에 count 변수가 저장횟수 K 보다 작은지 확인하여 -1을 출력한다. #include #define NUM 500000 int sorted[NUM]; int num, ..

programming/c 2023.01.14

합병정렬(merge sort)

분할 정복(divide and conquer) 문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략 - 분할(Divde) 입력 배열을 같은 크기의 2개의 부분 배열로 분할 - 정복(Conquer) 부분 배열을 정렬 - 결합(Combine) 정렬된 부분 배열들을 하나의 배열에 합병 #include int sorted[8]; void merge(int list[], int left, int mid, int right){ int i,j,k,l; i=left; //왼쪽 배열의 첫 인덱스 j=mid+1; //오른쪽 배열의 첫 인덱스 k=left; //임시 배열 인덱스 // 합병 while(i

programming/c 2023.01.14

error: variable-sized object may not be initialized

C90 표준이 적용된 C 컴파일러는 배열을 사용해 변수를 선언할 때 배열길이를 상수로 사용해야 한다. 아래와 같이 사용하면 오류가 발생한다. int n=8; int list[n]={21,10,12,20,25,13,15,22}; C99 표준 문법은 위 같은 표현이 가능하며, 이를 가변 길이 배열 (Variable-Length Array)이라 부른다. VLA 지원되지 않는다면, malloc 함수를 통해 동적 배열을 구현하면 된다.

programming/c 2023.01.14