○비교를 위한 함수들

 ▷Constant: 1

 ▷Logarithmic: log(n)

 ▷Linear: n

 ▷N-Log-N: n log(n)

 ▷Quadratic: n^2

 ▷Cubic: n^3

 ▷Exponential: 2^n

 

 

 

 

○실행 시간 비교

 ▷평균을 잡는 것은 힘들기 때문에, 최악의 경우를 고려함.

 ▷같은 조건하게 구현하여 시간을 측정하는 것은, 구현이 필요하며 특정 Input을 고려하지 못하고 하드웨어/소프트웨어가 동일해야함.

 ▷RAM 접근과 계산에 일정한 시간을 가진다고 고려. -> Operation 개수로 시간을 비교

 

 ▶성장도

  ▷Input값이 증가함에 따라 시간이 어떻게 변하는지.

  ▷주로 함수들로 표현함.

  ▷상수, 하위의 차수에 영향받지 않음 (-> 무시가능)

 

 ▶Big-Oh Notation (O(g(n))

  ▷n ≥ n_0일때, f(n) ≤ cg(n) 일때, f(n)은 O(g(n)) 이라고 한다. (f(n) is Big-Oh of g(n))

  ▷n_0보다 클 때, 항상 cg(n) 보다 작거나 같다. (최악의 경우)

  ▷성장률이 g(n)보다 작거나 같다, g(n)은 주로 위의 함수들로 표현한다. (상수 -> c로 가기 때문에 무시 가능)

 

 ▶Big-Omega (Ω(g(n))

  ▷n_0보다 클 때, 항상 cg(n) 보다 크거나 같다. 

 ▶Big-Theta (Θ(g(n))

  ▷n_0보다 클 때, 항상 cg(n)과 같다. 

 

 

 

 

※Pseudo Code

 

 

'컴퓨터 지식 > 자료구조' 카테고리의 다른 글

Quene  (0) 2020.10.13
Stack  (0) 2020.10.12
Linked List  (0) 2020.10.06
Array  (0) 2020.10.06
자료 구조  (0) 2020.10.04

○Linked List

 ▷node끼리 주소로 연결한 리스트

 ▷이산된 메모리 주소를 가짐

 ▷처음 원소의 주소를 통해 순차 접근

 ▷포인터 이용

 ▷중간 요소의 추가/제거가 자유로움

 ▶Singly Linked List (앞으로만 이동 가능)

 

 

  ▷추가

 

 

  ▷제거

 

 

▶Doubly Linked List (양쪽으로 이동 가능)

 ▷Single Linked List에서 이전 노드를 가리키는 포인터가 추가됨.

'컴퓨터 지식 > 자료구조' 카테고리의 다른 글

Quene  (0) 2020.10.13
Stack  (0) 2020.10.12
알고리즘 해석  (0) 2020.10.06
Array  (0) 2020.10.06
자료 구조  (0) 2020.10.04

●Array (배열)

 ▷동일한 타입의 데이터들을 묶는 구조

 ▷메모리의 연속된 위치에서 차례대로 저장

 ▷정적 할당 / 동적 할

 ▷Random Access 가능

 ▷새로운 객체를 임의의 위치에 마음대로 넣을 수 없음. (뒤의 개체들을 한 칸씩 미는 작업 필요) 마음대로 뺄 수도 없음.

 

 ▶배열 선언 (정적 할당도 가능)

  ▷동적 할당: int* A = new int[length]; (delete[] A;)

  ▷2차원 배열 동적 할당

 

'컴퓨터 지식 > 자료구조' 카테고리의 다른 글

Quene  (0) 2020.10.13
Stack  (0) 2020.10.12
알고리즘 해석  (0) 2020.10.06
Linked List  (0) 2020.10.06
자료 구조  (0) 2020.10.04

●Data Structure (자료 구조)

 ▷문제 해결을 위해 데이터를 조직해서 표현하는 방법.

 ▷Linear data structure: Array, Stack, Quene, Linked-List

 ▷Non-linear data structure: Graphs, Trees

 

○Altorithm (알고리즘)

 ▷문제 해결을 위해 특정한 일을 수행하는 명령어들의 집합

 ▶조건

  ▷Input(입력): 외부에서 공급된 입력 (0이상?)

  ▷Output(출력): 최소 하나의 출력

  ▷Defiteness(명확성): 각 명령어가 명확함

  ▷Finiteness(유한성): 언젠가는 종료함

  ▷Effectiveness(유효성): 컴퓨터가 실행 가능해야함

 

 ▷표현 방법: 자연어, Flow Chart Pseudo Code, Programming language...

 ▶복잡도 분석

  ▷연산 횟수 -> Big-O (최악의 경우) 자주 사용

 

※Abstract Data Type (ADT)

 ▷데이터 구조의 추상화

 ▷무슨 일을 하는지는 지정하지만, 어떻게 하는지는 지정하지 않는 데이터 타입.

 ▶정보

  ▷저장된 데이터

  ▷연산/명령 (메서드?)

  ▷연산에 대한 에러

 

'컴퓨터 지식 > 자료구조' 카테고리의 다른 글

Quene  (0) 2020.10.13
Stack  (0) 2020.10.12
알고리즘 해석  (0) 2020.10.06
Linked List  (0) 2020.10.06
Array  (0) 2020.10.06

●Regular Expression

 ▷문자열에 나타나는 특정 문자 조합과 대응시키기 위해 사용되는 패턴.

 ▷그 자체로 하나의 언어이며, 여러 프로그래밍에서 자주사용된다.

 ▶정규 표현식 기호

  ▷^ : 문자열의 시작부분

  ▷$ : 문자열의 끝부분

  ▷. : 와일드카드-모든 문자

  ▷\s : 공백 문자들

  ▷\s : 공백이 아닌 문자들

  ▷[] : 범위내 있는 문자 중 하나.

   ▷[0-9a-Z] : 0부터 9까지 또는 a부터 Z까지 (아스키코드기준?) 중의 문자

   ▷[^XYZ] : XYZ제외의 문자

   ▶캐릭터 클래스- [[:캐릭터 클래스:]]으로 사용

    ▷alnum: 모든 알파벳과 수 ( [a-zA-Z0-9] )

    ▷alpha: 알파벳 ( [a-zA-Z] )

    ▷digit: 수 ( [0`9] )

    ▷space: 공백 문자

    ▷lower: 소문자 알파벳 ( [a-z] )

    ▷upper: 대문자 알파벳 ( [A-Z] )

 

  ▷* : 문자가 0번이상 반복됨. (가능한 최대 길이의 경우)

  ▷*? : 문자가 0번이상 반복됨. (가능한 최소 길이의 경우)

  ▷+ : 문자가 1번 이상 반복됨. (가능한 최대 길이의 경우)

  ▷+? : 문자가 1번 이상 반복됨. (가능한 최소 길이의 경우)

  ▷{n} : 문자가 정확히 n번 반복됨.

  ▷{m, n} : 문자가 m번이상 n번이하 반복됨.

 

  ▷( ) : 추출할 문자열 (위의 사항을 만족하는 문자열에서 해당 부분만 가져옴)

 

'컴퓨터 지식 > 기타' 카테고리의 다른 글

R 기초  (0) 2020.11.21
Template  (0) 2020.10.12
CPU - BUS  (0) 2020.03.16
CPU 분류 - 폰 노이만, 하바드  (0) 2020.03.16
CPU - RISC 처리 과정  (0) 2020.03.16

+ Recent posts