본문 바로가기

컴퓨터/자료구조4

[C언어] 링크드 리스트로 구현한 int 저장형 큐 예제 '뇌를 자극하는 알고리즘' 의 링크드 큐 부분을 그대로 복사하여 int형에 맞게 수정한 것입니다. LinkedQueue.h (헤더파일)#ifndef LINKED_QUEUE_H #define LINKED_QUEUE_H #include #include typedef struct tagNode { int Data; struct tagNode* NextNode; }Node; typedef struct tagLinkedQueue { Node* Front; Node* Rear; int Count; }LinkedQueue; void LQ_CreateQueue(LinkedQueue** Queue); void LQ_DestoryQueue(LinkedQueue** Queue); Node* LQ_CreateNode(int .. 2013. 11. 4.
[정렬][C++] Template를 이용한 퀵 정렬(Quick Sort) Quick Sort(퀵 정렬)C++, Array Version (배열 버전) Quick Sort Function(퀵 정렬 함수) // 첫번째 인자 : 배열 // 두번째 인자 : 무조건 1 (두번째 인자 Index) // 세번째 인자 : 배열의 길이 + 1 (마지막 인자 Index) // 네번째 인자 : Ascending 일 때 오름차순, Descending 일 때 내림차순template void sort_quick(T (&_input)[n], int Left, int Right, bool _option) { int Base_Index = Left-1;//가장 왼쪽의 값을 기준 값으로 잡음 int Left_Index = Left; int Right_Index = Right; if(Right_Index _i.. 2013. 2. 14.
[정렬] 매크로를 이용한 배열의 길이 계산 [자료구조][정렬] 매크로를 이용한 배열의 길이 계산 #define ARRAY_LENGTH(X) sizeof(X) / sizeof(X[0]) 예제 코드(C++용)int main(void) { int test[] = {1, 5, 3, 6, 9, 11}; cout 2013. 2. 12.
[정렬] 쉘 정렬 (Shell Sort) 알고리즘 쉘 정렬은 삽입 정렬의 단점을 보완하기 위해서 Donald Shell이 1958년 고안한 방법이다.삽입 정렬은 Array 전체에 대해서 정렬을 수행하게 된다. 최악의 경우, 다시말해서 오름차순 정렬을 해야하는데, Array가 내림차순 정렬이 되어있는 경우연산이 많아지게 될 수 밖에 없다. 쉘 정렬의 기본적인 아이디어는 삽입 정렬을 하기 전에 정리를 해놓자는 것이다.그렇다면, 어떻게 정리할 것인가?삽입 정렬은 모든 원소에 대해서 검사를 하지만,쉘 정렬의 경우, 앞에서 구한 어떠한 간격만큼 떨어진 원소에 대해서 삽입정렬을 먼저 수행하고,그 간격을 점점 줄여 계속 삽입정렬을 하는 방법을 취한다.간격은 결국 1이 될 것이며, 1이 되는 때는 곧, 삽입 정렬을 수행하는 것과 동일하다.하지만 이미 Arra.. 2013. 1. 29.