Data Structure & Algorithms

Slides:



Advertisements
Similar presentations
프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
Advertisements

알고리즘 기본 개념 정렬 알고리즘 탐색 알고리즘 알고리즘 복잡도.
컴퓨터와 인터넷.
CHAP 1:자료구조와 알고리즘.
(Program = Algorithm + Data Structure)
네트워크 기술을 통한 현재와 미래 소개.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
최윤정 Java 프로그래밍 클래스 상속 최윤정
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
CHAP 1:자료구조와 알고리즘 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
자료구조 (Data Structures)
Data Structure & Algorithms
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
연결리스트(linked list).
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
Multi Intelligence Theory
CHAP 1:자료구조와 알고리즘 순천향대학교 컴퓨터공학과 하 상 호.
CHAP 1:자료구조와 알고리즘 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
Chapter 02 순환 (Recursion).
5장. 참조 타입.
CHAP 1:자료구조와 알고리즘 C로 쉽게 풀어쓴 자료구조 생능출판사 2012.
컴퓨터과학 전공탐색 배상원.
CHAP 1:자료구조와 알고리즘 C로 쉽게 풀어쓴 자료구조 생능출판사 Slide 1 (of 28)
CHAP 1:자료구조와 알고리즘.
보고서 #5(제출기한: 10/14) 다음 문제를 해결하시오.
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
프로그래밍 랩 – 7주 리스트.
공학컴퓨터프로그래밍 Python 염익준 교수.
Introduction To Data Structures Using C
C#.
자바 5.0 프로그래밍.
프로그래밍 개요
5. Context-free 문법 5-1. 서 론 5-2. 유도와 유도 트리 5-3. CFG표기법.
4장 순서도와 프로그램 논리 1. 절차의 표현 2. 순서도(flowchart) 3. 프로그램 논리 4. 순서 논리
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
다음 주 과제 3장 읽어오기 숙제 해서 제출하기. 자료구조와 알고리즘, 순환 E304호,
Multi Intelligence Theory
CHAPTER 04. 프로그래밍 언어 인간과 컴퓨터의 대화_진화하는 소통. 진화하는 컴퓨터
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Chap. 1 Data Structure & Algorithms
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
Chapter 03. 관계 데이터베이스 설계.
자바 5.0 프로그래밍.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
텍스트 분석 기초.
웹사이트 분석과 설계 (화면 설계) 학번: 성명: 박준석.
Chapter 11 해쉬(Hash) SANGJI University Kwangman KO
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
CHAP 1:자료구조와 알고리즘.
Ⅱ. 자료와 정보 ‣ 02. 자료와 정보의 분석 2. 정보의 구조화.
알고리즘 알고리즘이란 무엇인가?.
데이터 동적 할당 Collection class.
Flow Diagram IV While.
Part 2 개념적 데이터 모델 Copyright © 2006 by Ehan Publishing Co. All rights reserved.
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
발표자 : 이지연 Programming Systems Lab.
실습 UBLAB.
.Net FrameWork for Web2.0 한석수
왜 ‘프로그래밍’을 ‘비이공계 학생’이 알아야 하는가?
CHAP 1:자료구조와 알고리즘.
07. DB 설계 명지대학교 ICT 융합대학 김정호.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
C로 만드는 자료구조.
7 생성자 함수.
언플러그드 원리를 통한 재미있는 교과 학습 (1/5주제)
Presentation transcript:

Data Structure & Algorithms SANGJI University KO Kwangman (kkman@sangji.ac.kr)

1. 자료와 정보 자료(data) 정보(information) 현실 세계로부터의 단순한 관찰이나 측정을 통하여 수집한 사실이나 개념의 값들 또는 값들의 집합. 정보(information) 의사 결정에 도움을 주기 위해 유용한 형태로 다시 작성된(=가공) 자료.

자료구조 정의 ? 일상생활에서의 사물의 조직화 조직도 해야할일 리스트 Ticket Box

해야할일 리스트 a b c NULL C B A Ticket Box 전단(front) 후단(rear)

자료구조(data structure) 란 ? 다루고자 하는 자료 원소들(elements) 간 논리적 관계를 기술한 것 컴퓨터의 휘발성 또는 비 휘발성 메모리에 존재하는 자료의 집합 자료값에 대한 연산을 효율적으로 처리할 수 있도록 자료의 구성을 조직적이고 체계적으로 표현하는 것

자료구조의 선택 기준 자료의 양(자료가 차지하는 메모리 공간) 자료의 활용 빈도(저장 방식 결정) 사용 가능한 기억 용량(전체적인 메모리 공간) 자료의 갱신 정도 처리 시간의 제한성 프로그래밍의 용이성

자료구조의 목적 효율성(Efficiency) 추상화(Abstraction) 재사용성(Reusability) 좀 더 효율적인 알고리즘이 될 수 있도록 자료를 구조화. 추상화(Abstraction) 자료를 보다 쉽게 이해할 수 있는 방법인 추상화를 제공. 재사용성(Reusability) 모듈화되어 있고 문맥에 자유롭기(context-free) 때문에 재사용이 가능.

… 2. 알고리즘과 프로그램 최대값 탐색 프로그램 = 배열+ 순차탐색 프로그램 = 자료구조 + 알고리즘 자료구조 알고리즘 score[] 80 70 90 … 30 tmp←score[0]; for i ← 1 to n do if score[i]>tmp then tmp←score[i];

알고리즘(algorithm) 프로그램(program) 어떤 문제를 해결하기 위해 기술해 놓은 명확한 절차로, 일련의 명령(instruction 또는 step) 집합을 의미 프로그램(program) 컴퓨터가 수행할 수 있는 상세화된 명령어의 집합

알고리즘의 요건 입력(Input) 출력(Output) 명백성(Definiteness) 유한성(Finiteness) 제공되는 자료가 있을 수도 있고 없을 수도 있다. 출력(Output) 한 개 이상의 결과가 반드시 생성되어야 한다. 명백성(Definiteness) 문제 해결 단계에서 수행할 내용은 모호하지 않고 명백해야 한다. 유한성(Finiteness) 한정된 수의 단계 후에는 반드시 종료되어야 한다. 유효성(Effectiveness) 알고리즘의 모든 명령은 수행 가능한 것이어야 한다.

대표적인 알고리즘 삽입(insert) 검색/탐색(search) 삭제/제거(delete) 정렬(sorting) 반복, 순회, … 자료구조에서 새로운 자료를 삽입 검색/탐색(search) 자료구조에서 원하는 자료를 찾기 삭제/제거(delete) 자료구조에서 기존의 자료를 삭제 정렬(sorting) 자료구조에 있는 자료들을 특정 키 값에 의해서 순서대로 나열 반복, 순회, …

자료구조, 알고리즘, 프로그램 사이의 관계

알고리즘 기술 방법 영어나 한국어와 같은 자연어 흐름도(flow chart) 유사 코드(pseudo-code) C/C++/Java/…와 같은 프로그래밍 언어 1 2 3 4 5 6 7 8 9 10

자연어로 표기된 알고리즘 특징 (예) 배열에서 최대값 찾기 알고리즘 인간이 읽기가 쉽다. 자연어의 단어들을 정확하게 정의하지 않으면 의미 전달이 모호해질 우려가 있다. (예) 배열에서 최대값 찾기 알고리즘 ArrayMax(A,n) 배열 A의 첫번쨰 요소를 변수 tmp에 복사 배열 A의 다음 요소들을 차례대로 tmp와 비교하면 더 크면 tmp로 복사 배열 A의 모든 요소를 비교했으면 tmp를 반환

흐름도로 표기된 알고리즘 특징 직관적이고 이해하기 쉬운 알고리즘 기술 방법 복잡한 알고리즘의 경우, 상당히 복잡해짐. tmp←A[0] i←1 i < n A[i]>tmp tmp←A[i] tmp no yes i++

유사코드로 표현된 알고리즘 특징 알고리즘의 고수준 기술 방법 자연어보다는 더 구조적인 표현 방법 프로그래밍 언어보다는 덜 구체적인 표현방법 알고리즘 기술에 가장 많이 사용 프로그램을 구현할 때의 여러가지 문제들을 감출 수 있다. 즉 알고리즘의 핵심적인 내용에만 집중할 수 있다.

C로 표현된 알고리즘 특징 알고리즘의 가장 정확한 기술이 가능 반면 실제 구현시의 많은 구체적인 사항들이 알고리즘의 핵심적인 내용들의 이해를 방해할 수 있다. #define MAX_ELEMENTS 100 int score[MAX_ELEMENTS]; int find_max_score(int n) { int i, tmp; tmp=score[0]; for(i=1;i<n;i++){ if( score[i] > tmp ){ tmp = score[i]; } return tmp;

4. 자료구조의 분류