본문 바로가기
  • Welcome.

:: C_ 🚩/알고리즘7

[자료구조] by C언어 #12 [연결리스트] ㅡㅡㅡㅡㅡ #include #include //연결리스트를 구현할 구조체 typedef struct NODE{ int data; struct NODE* next; }node; int main(void) { node* head = (node*)malloc(sizeof(node)); // 헤드(시작)노드 생성 head->next=NULL; // 머리 노드의 next값은 NULL이다. // 노드연결 node* node1 =(node*)malloc(sizeof(node)); // 노드생성. node1->next = head->next; //노드연결. // node1의 다음주소는 머리노드가 가리키던 다음주소(NULL)를 저장. node1->data =10; // node1의 데이터에는 10을 저장. head->n.. 2021. 4. 9.
[자료구조] by C언어 #09 [stack 구조] Stack 구조 - 후입선출(LIFO; Last In First Out)의 구조 - 저장된 데이터의 역순으로 데이터를 처리함 - ‘짐을 쌓아올린 형태’라는 의미의 구조 - 데이터의 저장은 push (밀어 넣기)라고 하며, 데이터의 처리는 pop (꺼내기)이라고 한다. 예) 인터넷 탐색의 ‘뒤로가기’ 기능 ‘실행취소’ 기능 텍스트 입력 커서 STACK 메모리 영역 (변수의 선언, 함수의 return) CPU의 연산 길 찾기 ㅡㅡㅡㅡㅡ #include #include #include #define MAX 8 #define TRUE 1 #define FALSE 0 void stack_test01(); void stack_test02(); int push(int data); int pop(); int arr[M.. 2021. 3. 30.
[자료구조] by C언어 -#08 [Quick sort] ㅡㅡㅡㅡㅡ #include #include #include #define SWAP(a, b) { int c = a; a = b; b = c; } // "교환" #define MAX 10 void quick_sort(int* arr, int start, int end) { // arr=숫자열 / start: 0부터. / end: MAX-1 = 9부터.// int pivot = arr[(end + start) / 2]; // (0+9)/2 => 4. pivot에 4 저장. int i = start; // i에 0저장. int j = end; // j에 9저장. while (i 2021. 3. 29.
[자료구조] by C언어 #07 [insertion sort] 삽입 정렬 알고리즘 (Insertion Sort) : 앞의 원소부터 차례대로 진행하여 원소 앞의 이미 정렬된 배열에 자신의 위치를 삽입하는 알고리즘 시간복잡도 : O(n**2) ㅡㅡㅡㅡㅡ #include #define MAX 8 void print_array(int list[], int n) { int i; for (i = 0; i remember; --j) // .. 2021. 3. 28.
[자료구조] by C언어 -05- [Merge Sort, Quick Sort] 합병 정렬 알고리즘 (Merge Sort): 정렬할 배열을 더 이상 나눠질 수 없는 배열로 나누어(Divide) 배열 단위별로 정렬(Conquer)해 나가는 알고리즘. 시간 복잡도 : O(n log n) ㅡㅡㅡㅡㅡ #include #define MAX 8 int tmp[MAX]; void merge(int list[], int left, int mid, int right) { int l_idx, r_idx, c_idx, t_idx; // l_idx : 왼쪽 배열의 커서 // r_idx : 오른쪽 배열의 커서 // c_idx : 작은수가 들어가야하는 배열의 현재 위치 // t_idx : 남은 원소를 한꺼번에 저장할 때 사용할 임시 인덱스 l_idx = c_idx = left; r_idx = mid + 1;.. 2021. 3. 27.
[자료구조] #03 by C언어 [재귀호출 알고리즘] [알고리즘1] ㅡㅡㅡㅡㅡ #include void recursive_func(int n){ if (n==0) return; printf("before call: %d\n", n); recursive_func(n-1); printf("after call : %d \n", n); } void main() { recursive_func(5); } ㅡㅡㅡㅡㅡ 아래와 같은 원리가 적용된다. [알고리즘2] ㅡㅡㅡㅡㅡ #include int factorial(int n){ if(n==1) return n; return n*factorial(n-1); } void main(void) { printf("%d \n", factorial(5)); } ㅡㅡㅡㅡㅡ [알고리즘3] ㅡㅡㅡㅡㅡ #include int fibonacc.. 2021. 3. 26.
[자료구조] by c언어 #02 시간복잡도, 공간복잡도, Big-O 표기법 공간 복잡도(Space Complexity) : 알고리즘에 사용되는 메모리 총량 시간 복잡도(Time Complexity) : 알고리즘에 수행되는 연산 횟수 총량 예시들을 통해 공간복잡도에 대해 알아보겠다. ㅡㅡㅡㅡㅡ int get_sum(int arr[], int n) { int sum = 0; int i = 0; for (i = 0; i < n; ++i) { sum += arr[i]; } return sum; } ㅡㅡㅡㅡㅡ 공간복잡도 = n + 3 3은 sum, i, n 이 세 개의 변수를 의미한다. ㅡㅡㅡㅡㅡ int get_sum(int** arr, int a, int b) { int sum = 0; int i = 0, j = 0; for (i = 0; i < a; ++i) { for(j = 0; .. 2021. 2. 16.
728x90