본문 바로가기

알고리즘(C언어)/이것이 자료구조+알고리즘이다(박상현)_자료구조19

(7)[Chapter5]정렬_버블정렬,삽입정렬(이론 + 코드), 작성중 ##버블정렬,삽입정렬_이론/코드 노트:##버블정렬 핵심 개념 .  버블정렬 직접 구현 핵심 개념 : (오름차순 : "낮 → 높" 으로 가정)  비교 : 서로 이웃한 값끼리 비교 연산 : "오름차순" => 왼 > 오 라면, => Swap()★N회전 범위(i) : size(원소 개수 : N )~ 1(원소 개수 :2) (역순 : 왼쪽으로 좁혀진다.)비교 연산의 범위 (j) : 0~ ( i -1) (순행)  . ★버블정렬의 총 비교홧수 , 총 연산횟수 :※ N회전마다, 비교, 연산횟수 빠르게 구하는 방법 => N회전 범위에서, 가장 큰 원소를 기준으로 왼쪽 오른쪽 나누고,비교 횟수 : 원소 배열 상태에 상관없이, N회차 범위 원소개수 - 1번연산 횟수 : N회차 범위 내에서, 가장 큰 원소가 왼쪽에 있을수록 ,.. 2024. 7. 10.
(6)[Chapter4]분리집합_이론,코드구현 ##분리집합 이론 노트 정리##분리집합 코드 구현  12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879#include stdio.h>#include stdlib.h> //분리 집합 구조체typedef struct _DS_Set {    struct _DS_Set* Parent;    void* Data;}Set; //원소(1개짜리 원소 집합) 생성 메소드Set* MakeSet(void* Data) {    Set* newSet = (Set*)malloc(sizeof(Set));    newS.. 2024. 7. 8.
(5)[Chapter4]수식트리 조립, 출력, 연산(코드구현) #수식 트리[한자리 수만 가능한 수식 트리입니다.]1_ 문자열 후위 수식으로 입력시, 중위 수식 트리로 이진트리 조립후위 수식으로 입력된 문자열을 역순으로 스캔재귀호출 한다.매개변수  : 입력된 문자열의 주소, 트리의 Root의 이중포인터문자 1개가 연산자 =>  노드할당과 문자1개 노드에 대입  => 오른쪽, 왼쪽 순으로 재귀 호출문자 1개가 피연산자 => 노드 할당, 문자1개 노드에 대입 => x(★즉, 연산자 재귀함수반환 == 노드 포인터 부모로 다시 올라가기)2_ 중위 수식 트리를 중위 순회로 출력 Left를 재귀 호출 시(NULL이 아니라면,) => '(' 출력Right를 재귀 호출 시 (NULL이 아니라면) => ')' 출력 3_ 중위 수식 트리를 후위 순회를 통해 연산 결과값 계산, 출력하기.. 2024. 7. 6.
(4)[Chapter4]이진트리(삽입,삭제 전)(코드구현) #이진트리 조립, 순회 코드 구현(삽입 삭제 전) ※알게 된 개념 :    이진트리의 메모리 해제는 후위 순회로 진행한다.123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127#include stdio.h>#include stdlib.h>#pragma warning (disab.. 2024. 7. 4.