문자열 String-type -> C언어에서는 문자열 타입이 없음.배열 형식 사용.
배열형식
구분자 사용 - 문자로 세미콜론 사용 (;)
단점: 탐색이 오래 걸림.
고정 길이 - 긴 문자열 길이x 부분문자열의 개수
단점: 낭비되는 문자열이 생김.
포인터를 사용 - 중요한건 * 와 &
단점:포인터가 없어도 함수 구현 가능
객체 지향언어로 인해 대세에서 밀리는 중.
구분자 사용과 고정 길이는 데이터 처리와 저장 방식에 따라 상호 보완 관계임.
자료의 추상화
뇌의 추상화 -> 핵심 요약
자료의 추상화 -> 단순화 (정수의 집합 등, 키 큰사람의 집합 등)
삼각형의 상위 무엇을? (추상화) => 도형
삼각형의 하위 어떻게? (구체화) => 입체
알고리즘 성능 분석
최적성: 가장 중요
절차지향->빠르게
객체지향->재활용, 모듈화
자원 (CPU,memory) 측면에서 분석하는 공간 복잡도
소요되는 시간 측면에서 분석하는 시간 복잡도
공간 복잡도: 알고리즘은 프로그램으로 실행하여 완료되기까지 필요한 저장 공간의 양
총 필요 공간 = 고정 요구 공간 + 가변 요구 공간
시간 복잡도: 컴파일링 시간 / 실행 시간
실행빈도수: 제어문, 주로 반복문
피보나치 수열로 실행 빈도수를 비교
Big - O 빅-오 표기법 : 아무리 못해도 n초 안에는 끝냄.
O(f(n))
Big - Omega(Ω) 빅-오메가 표기법 : 아무리 못해도 n초는 걸림.
Ω(f(n))
Big - Seta(Θ) 빅-세타 표기법 : 무조건 n임.
f(n)=Θ(f(n)), f(n) = Ω(f(n)), f(n) = O(f(n)))
자료구조: 부품
알고리즘: 설계도
조립: 프로그램언어
완성: 소프트웨어