prototype을 이용한 Java의 super개념 구현
super의 개념
- 상속 받은 부모 그 자체javascript에서 구현 방법
- 결과
'프로그래밍 > HTML,Javascript, css' 카테고리의 다른 글
| Javascript - 상속 (0) | 2016.04.28 |
|---|
prototype을 이용한 Java의 super개념 구현
super의 개념
- 상속 받은 부모 그 자체
javascript에서 구현 방법
| Javascript - 상속 (0) | 2016.04.28 |
|---|
병합 정렬
1. 병합 정렬이란?
- 분할 정복 ( DAC - Divide And Conquer ) 알고리즘 디자인 기법에 근거하여 만들어진 정렬 방법
* 분할정복이란? 복잡한 문제를 분할 하여 정복 후 결합하는 방법
∙ 1단계 분할(Divide) 해결이 용이한 단계까지 문제를 분할해 나간다.
∙ 2단계 정복(Conquer) 해결이 용이한 수준까지 분할된 문제를 해결한다.
∙ 3단계 결합(Combine) 분할해서 해결한 결과를 결합하여 마무리한다
2. 분할 방법
3. 재귀적 구현 (최소단위 까지 분할)
4. 병합을 위한 함수 정의
| [Sort]간단한 정렬 알고리즘 (0) | 2016.06.26 |
|---|---|
| 자료구조 - [Tree]수식 트리 (0) | 2016.05.16 |
| 자료구조 - [Tree]순회 (0) | 2016.05.07 |
| 자료구조 - [Tree]이진 트리 (0) | 2016.04.28 |
| 자료구조 - [Tree] 의 개요 (0) | 2016.04.27 |
간단한 정렬 알고리즘
1. 버블 정렬
- 버블 정렬의 이해
- 소스 코드
- 성능 평가
* 비교 횟수 : 두 데이터간의 비교연산 횟수
* 이동 횟수 : 위치의 변경을 위한 데이터의 이동 횟수
-> 실제로 시간 복잡도에 대한 빅-오(O)를 결정하는 기준은 '비교 횟수'이다. 하지만, 이동 횟수에 관한 성능까지 체크 한다면 동일 한 빅-오 연산에 대한 세밀한 성능평가가 가능하다.
- 비교 횟수 : O(n^2)
- 이동 횟수
-> 정렬이 되어 있는 경우 : 한번도 이동이 발생 하지 않음
-> 역순으로 정렬 되어 있는 경우 : O(n^2)
(실제론 비교 횟수의 3배 소요)
2. 선택 정렬
- 선택 정렬의 이해
- 소스 코드
- 성능 평가
- 비교 횟수 : O(n^2)
- 이동 횟수 : O(n) Worst Case와 Best Case관계 없이 동일
3. 삽입 정렬
- 삽입 정렬의 이해
- 소스 코드
- 성능 평가
- 비교 횟수 : O(n^2)
- 이동 횟수 :
Worst Case -> O(n^2)
Best Case -> 한번도 발생 안함
| [Sort] 병합 정렬 (0) | 2016.06.26 |
|---|---|
| 자료구조 - [Tree]수식 트리 (0) | 2016.05.16 |
| 자료구조 - [Tree]순회 (0) | 2016.05.07 |
| 자료구조 - [Tree]이진 트리 (0) | 2016.04.28 |
| 자료구조 - [Tree] 의 개요 (0) | 2016.04.27 |
수식 트리
1. 수식 트리의 이해
- 중위 표기법은 사람이 보기에는 좋으나 컴퓨터가 인식하기 어려운 표기법이다.
- 후위 표기법을 이용한 수식 트리를 이용하면 쉽게 수식 연산을 할 수 있다.
(중위 표기법 -> 후위 표기법 -> 수식 트리 순)
*후위 표기법 이란 7+4*2-1 -> 74+2*1- 처럼 연산자를 숫자 뒤에 표현하는 것을 말한다.
2. 수식 트리 구성 방법
- root노드는 연산자로 구성한다.
- 피연산자는 연산자 노드의 하단 부터 구성한다.
- 수식 트리를 구성하기 위해선 스택을 이용해야 된다.
(이때 후위 연산자 표기법으로 반드시 변경해야 한다.)
1. 후위 표기법 순서대로 피연산자 노드를 스택에 Push한다.
2. 연산자 Node를 만나면 연산자 Node의 서브 Node로 스택의 들어있는 피연산자 Node를 오른쪽부터 연결시킨다.
3. 연결된 수식 트리를 다시 스택에 Push시킨다.
4. 이 후 다시 1번부터 같은 로직으로 진행한다.
2. 수식 트리 구현
| [Sort] 병합 정렬 (0) | 2016.06.26 |
|---|---|
| [Sort]간단한 정렬 알고리즘 (0) | 2016.06.26 |
| 자료구조 - [Tree]순회 (0) | 2016.05.07 |
| 자료구조 - [Tree]이진 트리 (0) | 2016.04.28 |
| 자료구조 - [Tree] 의 개요 (0) | 2016.04.27 |
이진 트리의 순회
1. 순회의 세 가지 방법
- 기준 : root node를 언제 방문 하는지
- 재귀적 형태로 구성하면 높이 상관없이 순회 가능
2. 순회의 재귀적 표현
- 1단계 : 왼쪽 서브 트리의 순회
- 2단계 : root node의 방문
- 3단계 : 오른쪽 서브 트리의 순회
※ VisitFuncPtr 함수 포인터를 사용하여 트리 구조를 이용한 원하는 행동을 할 수 있음
| [Sort] 병합 정렬 (0) | 2016.06.26 |
|---|---|
| [Sort]간단한 정렬 알고리즘 (0) | 2016.06.26 |
| 자료구조 - [Tree]수식 트리 (0) | 2016.05.16 |
| 자료구조 - [Tree]이진 트리 (0) | 2016.04.28 |
| 자료구조 - [Tree] 의 개요 (0) | 2016.04.27 |
Eclipse Libraray 추가하기
(Add Library to Eclipse)
1.프로젝트 우측 클릭 -> Build Path -> Configure Build Path
2. Add Jars 클릭
3. lib 폴더에 있는 추가 할 libraray선택(여기까지 끝)
4. libraray를 추가 하였는데도 동작이 안될 경우
- 이유 : 기존 Libraray가 업데이트 한 Libraray보다 아래에 있어서 기존 Libraray로 동작
-> Order and Export에서 추가한 Librarary를 Up으로 맨 위로
이진 트리
1. 이진 트리의 조건
- root node를 중심으로 두 개의 sub tree로 나뉘어진다.
- 나누어진 두 sub tree도 모두 이진 트리이어야 한다.
※ 트리 그리고 이진 트리는 그 구조가 재귀적이다. 따라서 트리와 관련된 연산은 재귀적 사고와 구현을 할 필요가 있다.
2. 이진 트리와 공집합 노드
- 하나의 노드에 두 개의 노드가 달리는 형태의 트리는 모두 이진 트리이다
- 공집합(Empty set)도 이진 트리에서는 노드로 간주한다.
-> 그러므로 형제 노드가 비어 있다고 해도 공집합으로 간주하여 이진 트리 가 성립 된다.
3. 이진 트리의 레벨과 높이
- root 노드 부터 0레벨로 시작하고, 아래로 갈수록 레벨이 증가한다.
- 레벨의 최대값과 트리의 높이는 같다.
3. 완전 트리와 포화 트리
- 완전 이진 트리는 위에서 아래로 왼쪽에서 오른쪽으로 채워진 트리를 의미한다.
- 따라서 포화 이진 트리는 동시에 완전 이진 트리이다.
- 하지만 와전 이진 트리는 포화 이진 트리가 될 수 없다.
4. 이진 트리 구현의 두 가지 방법
4_1 배열을 이용한 표현
- 노드에 번호를 부여하고 그 번호를 배열의 인덱스 값으로 활용
- 편의상 배열의 첫 번째 요소는 사용하지 않음
- 트리가 완성 된 이후부터 탐색이 자주 일어날 경우 효율적
4_2 연결리스트를 이용한 표현
- 트리의 구조와 리스트의 연결 구조가 일치한다.
- 구현과 관련된 직관적인 이해가 더 좋은 편
5. 이진 트리 구현 - 노드 구조체 정의
6. 이진 트리 구현 - 트리 기능관련 함수 정의
7. 이진 트리 구현 - 트리 동작
| [Sort] 병합 정렬 (0) | 2016.06.26 |
|---|---|
| [Sort]간단한 정렬 알고리즘 (0) | 2016.06.26 |
| 자료구조 - [Tree]수식 트리 (0) | 2016.05.16 |
| 자료구조 - [Tree]순회 (0) | 2016.05.07 |
| 자료구조 - [Tree] 의 개요 (0) | 2016.04.27 |
Javascript에서 Class 상속하기
1. Prototype을 이용한 구조
단점 -> Parent의 this로 참조되는 멤버들이 Child에 복사가 아닌 참조가 일어남
2. apply를 이용한 구조
-> 그래서 이와 같이 임의 생성자 'F'를 만들어 부모와 자식 객체의 prototype간의 링크를 끊어줄 수 있음
| [Javascript]prototype을 이용한 Java Super 구현 (0) | 2016.07.18 |
|---|