본문 바로가기
728x90

C11

[C/algorithm]연결 리스트 ( Linked List ) 활용 ▶연결 리스트 ( Linked List) 활용 노드를 이용하여 문자열에 대응하는 값을 얻을 수 있다. c++에서는 map에서 map["문자열"]=값과 같은 형태를 예로 들 수 있다. 단, 중복된 문자열에 대한 값은 생각하지 않는다. ▶소스코드 #include typedef struct _node { int idx; struct _node *alpha[26]; } node; node *create_node() {//노드 생성 node *np = (node *)malloc(sizeof(node)); for (int i = 0; i alpha[i] = NULL; return np; } void delete_node(node *np) {//노드 삭제 for (int i = 0; i <.. 2023. 4. 29.
[C/개념, 이해]함수 포인터 C언어 ▶함수 포인터 선언 void (*func)(void) = nullptr; void형 함수와 매개변수 없음. int (*func)(int) = nullptr; int형 함수와 int형 매개변수 int (*func[4])(int, int) = {}; 크기가 4인 함수 포인터 배열 void print(int (*func)(int, int)) { } print함수의 매개변수 func 함수 포인터 int (*func(int x, int y))(int, int) { } 함수 포인터를 함수 반환값으로 사용 ▶사용예시 void (*func)(void) = nullptr; #include void print() { printf("hello!\n"); } int main() { void (*func)(void) = nul.. 2021. 11. 21.
[C/algorithm]알고리즘 선택 정렬(Selection Sort) C언어 ▶선택 정렬 버블 정렬과 삽입 정렬보다 횟수가 적어 더 나은 성능을 보여준다. 배열의 앞에서부터 차례대로 정렬이 이루어진다. 평균 성능 시간 복잡도 : O(n^2) 최악 성능 시간 복잡도 : O(n^2) 최선 성능 시간 복잡도 : O(n^2) ▶소스코드 void SelectionSort(int arr[], int size) { int min, temp; for (int i = 0; i < size - 1; i++) { min = i; for (int j = i + 1; j < size; j++) { if (arr[j] < arr[min]) { min = j; } } if (i != min) { temp = arr[i]; arr[i] = arr[min]; arr[min] = temp; } } } 위 소스는.. 2021. 11. 20.
[C/algorithm]알고리즘 퀵 정렬(quick sort) C언어 ▶퀵 정렬 재귀 알고리즘이다. 피벗(pivot)을 선택해 피벗보다 작은 원소는 배열의 왼쪽으로, 큰 원소는 배열의 오른쪽으로 이동해 두 부분으로 나눈다. 왼쪽과 오른쪽으로 나눈 부분 배열을 각각 정렬한다. 평균 성능 시간 복잡도 : O(nlogn) 최악 성능 시간 복잡도 : O(n^2) 최선 성능 시간 복잡도 : O(nlogn) ▶소스코드 void QuickSort(int arr[], int left, int right) { int L = left, R = right; int temp; int pivot = arr[(L + R) / 2]; while (L pivot) R--; if (L left) QuickSort(arr, left, R); } 위 소스는 오름차순 정렬이다. ▶해석 퀵 정렬 함수 인자 l.. 2021. 11. 20.
728x90