본문 바로가기

자료구조

우선순위 큐 자료구조를 공부하면서 세미나 준비하는마음으로 쓴다 -_-;; 우선순위 큐란? 우선순위의 개념을 큐(Queue)에 도입한 자료구조이다. 보통 큐는 선입 선출(FIFO) 즉, 먼저 들어간 데이터가 먼저 나오는 차례대로 방식이다. 우선순위 큐의 구현 방법 - 배열을 사용하는 방법 - 연결 리스트를 사용하는 방법 - 히프를 사용하는 방법 이들 구현방법 중 '히프' 경우 완전 이진트리 일종으로 우선순위 큐를 위하여 만들어진 자료구조이다. 히프의 효율은 O(log2n) 으로 다른 방법보다 상당히 빠르다. 표현 방법 삽 입 삭 제 순서없는 배열 O(1) O(n) 순서없는 연결 리스트 O(1) O(n) 정렬된 배열 O(n) O(1) 정렬된 연결 리스트 O(n) O(1) 히프 O(log2n) O(log2n) 히프 히프는.. 더보기
퀵소트 구현 소스 퀵 정렬(Quick Sort) 퀵정렬경우 데이터양이 크고 뒤죽박죽일 경우 가장 빠른속도를 낼 수 있다. (데이터양이 작고 덜섞인 경우 삽입정렬이 빠르다.) 먼저 퀵정렬의 원리. 다음과 같이 pivot이라는 기준점을 정하고 (주로 가장 왼쪽이나 오른쪽을 택한다. ) 그외의 요소를 각각 바깥쪽에서 접근한다. left는 기준(pivot)보다 작은값을 찾고, right는 기준(pivot)보다 큰 값을 찾는다. pivot은 조만간 가운데에 낄것이다. 그 가운데를 기점으로 왼쪽으로는 pivot보다 작은값 , 오른쪽으로는 pivot보다 큰값을 들어가게 하려는 작정이다. (이는 오름차순으로 정렬할 목적일때 경우) 왼쪽부터 움직이는 인덱스(left)가 움직이다가 대상을 찾으면 멈추고 다음으로 오른쪽에서 왼쪽으로 움직이는.. 더보기
더블 링크드 리스트 더블 링크드 리스트(Double Linked List) 기본 뼈대, 핵심. 이정도 이해,구현이 가능하다면 Delete 등의 구현도 어렵지 않다. #include #include typedef struct Node { int bookNum; struct Node * next; struct Node * pre; }Book; Book* CreateNewNode( Book * myBook, int data) //노드생성 { myBook = (Book*)malloc(sizeof(Book)); myBook->bookNum = 0; myBook->next = NULL; myBook->pre = NULL; myBook->bookNum = data; return myBook; } void InsertNode(Book**.. 더보기