C++
-
[알고리즘] 2차원 배열 90도 회전하기 - C/C++알고리즘/알고리즘 구현 2020. 4. 18. 20:27
void rotate_cw(int M, int array[4][4], int count) { int rotatedArray[4][4]; while (count--) { for (int row = 0; row < M; ++row) { for (int col = 0; col < M; ++col) { rotatedArray[row][col] = array[M - 1 - col][row]; } } for (int row = 0; row < M; ++row) { for (int col = 0; col < M; ++col) { array[row][col] = rotatedArray[row][col]; } } } } void rotate_ccw(int M, int array[4][4], int count) { int..
-
[알고리즘] 퀵소트(Quick Sort) - C/C++알고리즘/알고리즘 구현 2018. 9. 29. 16:56
- 피봇(pivot)을 기준으로 왼쪽에 작은 값 / 오른쪽에 큰 값으로 분류한 후, 이 두 부분 집합에 대해 각각 퀵소트를 동일하게 반복하는 분할 정복 (Divide and Conquer) 기법의 정렬 알고리즘 - 재귀호출 이용 * 최선, 평균 : - 상당히 효율적인 정렬 알고리즘임을 알 수 있다. * 최악 : - 부분집합이 한 쪽으로만 계속 몰리는 경우 효율성이 떨어진다. void quickSort(int arr[], int start, int end) { if (start < end) { int left = start; int right = end; int pivot = end; while(left < right) { while(arr[left] = arr[pivot] && left < right) ..
-
[자료구조] 배열로 구현한 원형 큐(Circular Queue) - C/C++자료구조 2017. 7. 23. 18:19
- 선형구조로 자료를 차례대로 저장하고, 가장 먼저 들어간 자료가 가장 먼저 나오는 FIFO(First In First Out, 선입선출)의 특성을 지닌다. - 자료 반환은 큐의 제일 앞(front)에서만 가능하고 자료 추가는 큐의 제일 끝(rear)에서만 가능하다. --> 선형 큐의 단점 : dequeue가 실행되고 생긴 front 앞의 빈 노드가 있어도, rear가 이동할 오른쪽에 빈 노드가 없으면 overflow현상이 발생한다. = 선형 큐는 메모리 비효율적이다. --> 선형 큐의 대안으로 원형 큐가 제시되었다. - rear의 오른쪽과 front의 왼쪽을 (가상적으로) 연결시켜, rear의 오른쪽으로 front의 왼쪽 빈 노드를 사용할 수 있도록한다. - rear 노드 이동에 mod 연산자를 이용한..
-
[자료구조] 연결리스트로 구현한 큐(Linked Queue) - C/C++자료구조 2017. 7. 20. 21:05
- 선형구조로 자료를 차례대로 저장하고, 가장 먼저 들어간 자료가 가장 먼저 나오는 FIFO(First In First Out, 선입선출)의 특성을 지닌다. - 자료 반환은 큐의 제일 앞(front)에서만 가능하고 자료 추가는 큐의 제일 끝(rear)에서만 가능하다. * 본 게시물에서의 큐는 연결리스트(Linked List)로 구현하였다. 1. 노드 : 자료구조에 저장할 데이터를 가진 각각의 원소들을 구조체 Node로 선언한다. - 기존 연결리스트와 동일한 형태로 구성된다. typedef struct Node { Node *next; void *data; } Node; 2. 큐 : 구조체 Queue을 선언한다. - front(자료를 반환하는 큐의 제일 앞), rear(자료를 추가하는 큐의 제일 끝) 이라..
-
[자료구조] 스택(Stack) - C/C++자료구조 2017. 7. 15. 15:57
- 선형구조로 자료를 차례대로 저장하고, LIFO(Last In First Out = 후입선출)의 특성을 가진다. - 자료의 추가/반환이 스택의 끝에서만 가능한 제약 사항으로 인해 리스트 자료구조와 구별되는 독특한 특성을 가진다. * 본 게시물에서의 스택은 이중연결리스트(Double Linked List)로 구현하였다. 1. 노드 : 자료구조에 저장할 데이터를 가진 각각의 원소들을 구조체 Node로 선언한다. - 기존 이중연결리스트와 동일한 형태로 구성된다. typedef struct Node { Node *rlink; Node *llink; void *data; } Node; 2. 스택 : 구조체 Stack을 선언한다. - 기존 이중연결리스트와 동일하되, 특별히 top이라는..