본문 바로가기

프로그래밍/C언어15

[정렬] 버블 정렬 자료구조 연결 리스트 이진 트리 스택 큐 해시 정렬 버블 정렬 선택 정렬 삽입 정렬 퀵 정렬 힙 정렬 알고리즘 재귀 함수 너비 우선탐색(BFS) 깊이 우선탐색(DFS) 다익스트라 버블정렬(Bubble Sort) 버블 정렬은 인접한 두 변수를 비교하여 정렬하는 방법이다. 시간 복잡도 : O(n^2) 소스코드 #define __main #ifdef __main #include #include #include #define MAX_SIZE 10 void Init(int arr[]) { srand(time(NULL)); for (int i = 0; i < MAX_SIZE; i++) { // 임의의 정수 입력 arr[i] = rand() % 10000; } } void swap(int* a, int* b) { i.. 2020. 11. 4.
[자료구조] 해시 자료구조 연결 리스트 이진 트리 스택 큐 해시 정렬 버블 정렬 선택 정렬 삽입 정렬 퀵 정렬 힙 정렬 알고리즘 재귀 함수 너비 우선탐색(BFS) 깊이 우선탐색(DFS) 다익스트라 해시(Hash) 해시법은 기존 배열을 이용한 데이터 관리를 좀더 효율적으로 관리하기위해 임의의 길이(Prime Number)의 테이블을 이용하여 매핑하는 방법이다. 배열을 이용할때는 삭제하기 위해서는 시간복잡도가 O(n)만큼 들지만 해시법을 이용하면 O(1)만큼 들다. 해싱 key값을 임의의 수로 만들어주는 함수("GetKey()")를 이용하여 해시값을 구한다. 해시값에 해당하는 주소가 가리키는 노드의 가장 끝단까지 이동한다. 이동하면서 중복된 key값이 있는지 확인한다. 가장 끝단에 노드를 만들어 Key, Daata값을 저장한.. 2020. 11. 1.
[자료구조] 큐 자료구조 연결 리스트 이진 트리 스택 큐 해시 정렬 버블 정렬 선택 정렬 삽입 정렬 퀵 정렬 힙 정렬 알고리즘 재귀 함수 너비 우선탐색(BFS) 깊이 우선탐색(DFS) 다익스트라 큐(Que) 큐는 기본적으로 선입선출(First In First Out)을 따른다. 큐라는 배열에 Enque()를 통해 데이터를 입력하고 Deque()를 통해 먼저 들어온 값부터 출력하는 구조이다. Enque rear가 가리키는 위치에 데이터를 입력한다. rear를 1증가시킨다. 만일 rear가 큐의 max보다 크면 0으로 초기화한다. Deque front가 가리키는 위치의 데이터를 출력한다. front를 1증가시킨다. 만일 front가 큐의 max보다 크면 0으로 초기화한다. 소스코드 #define __main #ifdef _.. 2020. 11. 1.
[자료구조] 스택 자료구조 연결 리스트 이진 트리 스택 큐 해시 정렬 버블 정렬 선택 정렬 삽입 정렬 퀵 정렬 힙 정렬 알고리즘 재귀 함수 너비 우선탐색(BFS) 깊이 우선탐색(DFS) 다익스트라 스택(Stack) 스택은 기본적으로 후입선출(Last In First Out)을 따른다. 스택이라는 배열에 Push()를 통해 차곡차곡 쌓아올리고 Pop()을 통해 가장 늦게 들어온 값부터 출력하는 구조이다. Push() 배열에서 ptr위치에 값을 넣는다. ptr을 1증가시킨다. Pop() ptr를 1감소시킨다. 배열에서 ptr위치의 값을 출력한다. 소스 코드 #define __main #ifdef __main #include typedef struct __Stack{ int* stk; // 스택 int max; // 스택의 최.. 2020. 10. 30.