일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 웹기초
- VGG-F
- vgg
- springboot
- 자바
- 배열
- strdup
- 스프링입문
- 김영한
- 오븐시계
- 김영한스프링부트
- 이미지생성
- inflearn
- 조건문
- C
- 백준
- ChatGPT
- Intellij
- 문자열
- VGG-M
- C언어로쉽게풀어쓴자료구조
- 다차원
- 스프링기초
- 시간복잡도
- 포인터
- VGG-S
- 다차원배열순회
- 자료구조
- 파일읽고쓰기
- gan
- Today
- Total
YUIN
C 언어로 쉽게 풀어 쓴 자료구조 1장 자료구조와 알고리즘 본문
자료구조: 일상생활에서의 사물의 조직화
- 데이터를 조직화하고 저장하는 법
-테이터를 효율적으로 저장, 검색, 삽입, 삭제
여러 자료구조의 비교
1) 스택: 그릇을 쌓아서 보관하는 것 (후입선출 방식, 맨 마지막에 들어간 자료가 가장 먼저 빠져나옴)
2) 큐: 마트 계산대의 줄 (선입선출 방식, 가장 먼저 들어간 자료가 가장 먼저 빠져나옴)
3) 리스트: 버킷 리스트, 데이터의 묶음
4) 사전: 영어사전, key와 value로 저장
5) 그래프: 지도, node와 edge
6) 트리: 컴퓨터의 디렉토리 구조, 나무를 거꾸로 뒤집어놓은 구조, root가 가장 위에 존재
프로그램은 크게 자료구조와 알고리즘으로 구성돼 있다. ; 명령문의 집합
여기서의 자료구조는 일상생활에서의 사물의 조직화를, 알고리즘은 컴퓨터로 문제를 풀기 위한 단계적 절차를 의미한다.
알고리즘의 조건:
1) 입력: 0개 이상의 입력이 존재하여야 한다. -> 입력이 필수적이지는 않다.
2) 출력: 1개 이상의 출력이 존재하여야 한다.
3) 명백성: 각 명령어의 의미는 모호하지 않고 명확해야 한다.-> 컴퓨터가 일을 하기 때문에
4) 유한성: 한정된 수의 단계 후에는 반드시 종료되어야 한다.
5) 유효성: 각 명령어들은 실행 가능한 연산이어야 한다.
알고리즘의 기술 방법:
알고리즘은 1. 자연어 2. 흐름도 3. 의사 코드 4. 프로그래밍 언어 등 표현할 수 있는 방법이 여러 가지이지만 각각 장단점을 갖고 있음에 주의하자.
1. 자연어:
인간이 읽기 쉽지만 프로그래밍 할 때 단어를 정확하게 정의하지 않으면 의미 전달이 모호해질 위험이 있다.
기본적으로 길이가 길고 개발자의 성향에 따라/보는 사람에 따라 다르게 이해될 가능성이 있다.
2. 흐름도:
시각화했기 때문에 이해가 쉬울 수 있음, 간단한 로직이 아닌 이상 조건이 케이스별로 나누어져 있다면 복잡해짐.
3. 유사코드/의사코드/pseudo-code
알고리즘 기술에 가장 많이 사용
프로그래밍 언어가 가지는 특징을 최소화하고 알고리즘을 최대한 표현
4. C로 표현된 알고리즘
알고리즘의 가장 정확한 기술이 가능
프로그래밍 언어의 특성을 살리느라 읽어내야 할 코드가 더 많게 느껴질 수 있음
자료형: 데이터의 집합과 연산의 집합
추상 데이터 타입(ADT:Abstract Data Type):
-데이터 타입을 추상적으로 정의한 것 (필요한 정보만 가지고 기술)
-데이터나 연산이 무엇인가는 정의되지만 어떻게 컴퓨터 상에서 구현할 것인지는 정의되지 않는다.
-what을 정의하고 how는 정의하지 않는 기법.
-객체와 연산:
객체: 추상 데이터 타입에 속함
연산: 객체들 사이의 연산, 추상 데이터 타입과 외부를 연결하는 인터페이스(결합규칙) 역할
추상화: 어떤 시스템의 간략한 기술 또는 명세 (시스템의 핵심적인 구조나 동작에만 집중)
알고리즘의 성능 분석 기법:
1)수행 시간 측정: 실제로 구현, 동일한 하드웨어 사용 (같은 환경)
2)알고리즘의 복잡도 분석: 주요 연산이 수행된 횟수를 책정해서 비교, 직접 구현할 필요는 없음, n의 함수
복잡도의 종류에는 시간 복잡도와 공간 복잡도(메모리에 공간을 얼마나 차지할 지)가 있지만 책에서는 시간 복잡도를 다루고 있다.
빅오 기법: 자료의 개수가 많은 경우에는 차수가 가장 큰 항이 가장 영향을 크게 미치고 다른 항들은 상대적으로 무시될 수 있다는 이론에 근거. 기본적으로 상한을 의미한다.
빅오메가 기법: 함수의 하한을 표시
빅세타 기법: 함수의 상한과 하한을 동시에 표시
'자료구조' 카테고리의 다른 글
C언어로 쉽게 풀어 쓴 자료구조 1장 연습문제 (0) | 2023.12.26 |
---|---|
자료구조 5 [전화번호부.v2] (0) | 2023.08.22 |
자료구조 4 [전화번호부.v1] (0) | 2023.08.15 |
자료구조 3 [문자열 예제] (0) | 2023.08.08 |
자료구조 2 [문자열] (0) | 2023.08.03 |