본문 바로가기
728x90

C/algorithm6

[C/algorithm]연결 리스트 ( Linked List ) 활용 ▶연결 리스트 ( Linked List) 활용 노드를 이용하여 문자열에 대응하는 값을 얻을 수 있다. c++에서는 map에서 map["문자열"]=값과 같은 형태를 예로 들 수 있다. 단, 중복된 문자열에 대한 값은 생각하지 않는다. ▶소스코드 #include typedef struct _node { int idx; struct _node *alpha[26]; } node; node *create_node() {//노드 생성 node *np = (node *)malloc(sizeof(node)); for (int i = 0; i alpha[i] = NULL; return np; } void delete_node(node *np) {//노드 삭제 for (int i = 0; i <.. 2023. 4. 29.
[C/algorithm]알고리즘 선택 정렬(Selection Sort) C언어 ▶선택 정렬 버블 정렬과 삽입 정렬보다 횟수가 적어 더 나은 성능을 보여준다. 배열의 앞에서부터 차례대로 정렬이 이루어진다. 평균 성능 시간 복잡도 : O(n^2) 최악 성능 시간 복잡도 : O(n^2) 최선 성능 시간 복잡도 : O(n^2) ▶소스코드 void SelectionSort(int arr[], int size) { int min, temp; for (int i = 0; i < size - 1; i++) { min = i; for (int j = i + 1; j < size; j++) { if (arr[j] < arr[min]) { min = j; } } if (i != min) { temp = arr[i]; arr[i] = arr[min]; arr[min] = temp; } } } 위 소스는.. 2021. 11. 20.
[C/algorithm]알고리즘 퀵 정렬(quick sort) C언어 ▶퀵 정렬 재귀 알고리즘이다. 피벗(pivot)을 선택해 피벗보다 작은 원소는 배열의 왼쪽으로, 큰 원소는 배열의 오른쪽으로 이동해 두 부분으로 나눈다. 왼쪽과 오른쪽으로 나눈 부분 배열을 각각 정렬한다. 평균 성능 시간 복잡도 : O(nlogn) 최악 성능 시간 복잡도 : O(n^2) 최선 성능 시간 복잡도 : O(nlogn) ▶소스코드 void QuickSort(int arr[], int left, int right) { int L = left, R = right; int temp; int pivot = arr[(L + R) / 2]; while (L pivot) R--; if (L left) QuickSort(arr, left, R); } 위 소스는 오름차순 정렬이다. ▶해석 퀵 정렬 함수 인자 l.. 2021. 11. 20.
[C/algorithm]알고리즘 합병(merge) 정렬 C언어 ▶합병 정렬 각 단계에서 입력을 반으로 나눠 재귀 호출해 다시 합치면서 정렬 평균 성능 시간 복잡도 : O(nlogn) 최악 성능 시간 복잡도 : O(nlogn) 최선 성능 시간 복잡도 : O(nlogn) ▶소스코드 #define SIZE 10 int temp[SIZE]; void Merge(int arr[], int left, int mid, int right) { int L = left; int R = mid + 1; int n = left; while (L 2021. 11. 20.
728x90