알고리즘 기본 개념 정렬 알고리즘 탐색 알고리즘 알고리즘 복잡도.

Slides:



Advertisements
Similar presentations
출석수업 과제 – 총 5문제, 10월 25일 제출 정보통계학과 장영재 교수.
Advertisements

이진 나무 구조 강윤섭 2008년 5월 23일.
4장 배열과 함수 한빛미디어(주).
컴퓨터와 인터넷.
2.6 탐색(Search) 1. 순차검색 (Sequential Search, Linear Search)
(1.1 v) 엔트리교육연구소 엔트리 카드게임 설명서.
(Program = Algorithm + Data Structure)
T-tree 엄종진 강원대학교 컴퓨터과학과.
제14장 동적 메모리.
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
연결리스트(linked list).
제 9 장 구조체와 공용체.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
제 3 장 선형 리스트 3.1 선형 리스트 3.2 연결 리스트 3.3 다항식.
정보보안 프로젝트 (Sort Algorithm) 학 부 : 컴퓨터 정보공학부, 네트워크 정보 공학부
자료구조론 11장 정렬(sort).
Chapter 02 순환 (Recursion).
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
멀티미디어 시스템 (아날로그 이미지,신호를 디지털로 변환 방법) 이름 : 김대진 학번 :
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
배열(Array) 선린인터넷고등학교 정보통신과 유 순 옥.
CHAP 9: 정렬 (part 2) 순천향대학교 컴퓨터학부 하 상 호.
11 정렬.
자바 5.0 프로그래밍.
프로그래밍 개요
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
CHAP 9: 정렬 순천향대학교 컴퓨터학부 하 상 호.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
메모리 관리 & 동적 할당.
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
8장. 상호 배타적 집합의 처리.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Computer Vision & Pattern Recognition Lab. 위 은 영 (월)
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
보고서 (due 5/8) 다음과 같은 방식으로 문제를 해결하시오. 문제 분석 알고리즘 작성 프로그램 작성 테스트 및 검증
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
CHAP 12: 탐색 순천향대학교 컴퓨터학부 하 상 호.
CHAP 12: 탐색 순천향대학교 컴퓨터학부 하 상 호.
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
CHAP 12 : 탐색 C로 쉽게 풀어쓴 자료구조 Slide 1 (of 27).
알고리즘 알고리즘이란 무엇인가?.
데이터 동적 할당 Collection class.
1과목 데이터베이스 강사 이 민 욱.
자료구조론 12장 검색(search).
문서 클러스터링 일본언어문화학과 서동진.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
5장. 선택 알고리즘.
빠른정렬(Quick Sort) – 개요 (1/2)
쉽게 배우는 알고리즘 2장. 점화식과 점근적 복잡도 분석
Chapter 10 데이터 검색1.
CHAP 9: 정렬 순천향대학교 컴퓨터학부 하 상 호.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
트리 (Logical) Data Structures Linear list Tree Graph Linear structures
컴퓨터 개론 √ 원리를 알면 IT가 맛있다 쉽게 배우는 컴퓨터 기본 원리 한빛미디어 교재출판부.
제 4 장 Record.
수치해석 ch3 환경공학과 김지숙.
2014년 가을학기 손시운 지도 교수: 문양세 교수님 행렬과 배열 2014년 가을학기 손시운 지도 교수: 문양세 교수님.
 6장. SQL 쿼리.
빠른정렬(Quick Sort) – 개요 (1/2)
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
13. 포인터와 배열! 함께 이해하기.
C++ Espresso 제15장 STL 알고리즘.
6 객체.
Presentation transcript:

알고리즘 기본 개념 정렬 알고리즘 탐색 알고리즘 알고리즘 복잡도

알고리즘의 개념을 익히고 의사코드로 표현한다. 데이터를 정렬시켜주는 정렬 알고리즘들에 대해 이해한다. 원하는 키를 탐색하는 탐색 알고리즘의 다양한 방법을 익힌다. 알고리즘을 검증하고 적합한 알고리즘을 선택할 수 있다. 알고리즘 복잡도를 이해하고 계산할 수 있다.

알고리즘(Algorithm) 주어진 문제를 해결하기 위한 일련의 절차 알고리즘 개발 조건 입력(input) 출력(output) 정확성(correctness) 유한성(finiteness) 일반성(generality)

유클리드 알고리즘(Euclidean algorithm)

정렬(sorting) 데이터의 저장 위치에 따라 내부정렬(internal sort) 방식 주기억장치 내에서 이루어지는 정렬 방식 버블정렬 선택정렬 퀵정렬 외부정렬(external sort) 방식 외부정렬은 보조기억장치를 이용하는 방식

버블정렬(bubble sort) 방식 배열 A에서 인접한 두 데이터 A[i]와 A[i+1]을 비교하여 A[i+1]이 A[i] 보다 작다면 두 데이터를 서로 교환하여 주면서 큰 데이터가 배열의 끝에 오도록 정렬 데이터의 양이 늘어날수록 느리고 비효율적인 방식 [그림 10-1] 버블정렬 수행 전의 데이터

버블정렬 1단계 [그림 10-2] 버블정렬 1단계 완료

버블정렬 2단계 [그림 10-3] 버블정렬 2단계 완료

버블정렬 완성 [그림 10-4] 버블정렬 완성

버블정렬 알고리즘

선택정렬(selection sort) 방식 데이터에서 제일 큰 값이나 제일 작은 값을 찾은 후에 그 값만을 단계적으로 교환하여 정렬을 이뤄나가는 방식 선택정렬 과정 n 개의 데이터 값들 중에서 가장 큰 값을 찾음 그 값이 A[j]에 있다면 A[j]와 A[n-1]번째 값을 서로 교환 가장 큰 값을 배열의 맨 마지막 A[n-1]에 정렬 맨 마지막 원소 A[n-1]를 제외한 나머지 값들로 같은 과정을 반복 실행

선택정렬 예제 선택정렬 1단계 완성 [그림 10-5] 선택정렬 전 데이터 [그림 10-6] 선택정렬 1단계 완성

선택 정렬 완성 [그림 10-7] 선택정렬 완성

선택 정렬 알고리즘

삽입정렬(insertion sort) 방식 새로운 데이터를 정렬된 데이터에 삽입해 나가는 과정을 반복하여 전체 데이터를 정렬하는 방식 삽입정렬 과정 n 개의 데이터 정렬시 처음의 A[0]는 정렬된 데이터로 취급 다음 데이터 A[1]을 정렬된 데이터와 비교하여 적절한 위치에 삽입 다음 데이터 A[2]를 정렬된 데이터 A[0], A[1]과 비교하여 적절한 위치에 삽입 같은 방식으로 나머지 데이터들을 삽입하여 정렬을 완성

삽입 정렬 예제 A[2] 원소의 삽입 정렬 [그림 10-8] 삽입정렬 전 데이터 [그림 10-9] A[2] 원소의 삽입정렬

A[3] 원소의 삽입 정렬 [그림 10-10] A[3] 원소의 삽입정렬

삽입 정렬 완성 [그림 10-11] 삽입정렬 완성

삽입 정렬 알고리즘

삽입 정렬 알고리즘(계속)

퀵정렬(quick sort) 방식 퀵정렬 과정 특정한 데이터 피봇(pivot) 기준 전체 원소를 피봇 보다 작은 원소들과 피봇 보다 큰 원소들의 집합으로 분류 분류된 각각의 집합에서 다시 피봇을 설정 같은 과정을 반복하여 집합을 정렬

퀵 정렬 예제 [그림 10-13] 퀵정렬을 수행하기 전 데이터 피봇과 키 설정 [그림 10-14] 퀵정렬에서 피봇과 키 설정

처음 키 값의 교환 처음 피봇 7에 대해 L 과 R 이 가리키는 값을 찾음 L = A[1] = 8 R = A[6] = 2 L 이 가리키는 값과 R 이 가리키는 값을 서로 교환 [그림 10-15] 처음 키 값의 교환

퀵 정렬 1단계 완성 [그림 10-16] 피봇 7을 기준으로 퀵정렬 1단계 완성

[그림 10-17] 피봇 5를 기준으로 하여 퀵정렬 2단계 완성 퀵 정렬 2단계 완성 [그림 10-17] 피봇 5를 기준으로 하여 퀵정렬 2단계 완성

퀵 정렬 완성 [그림 10-18] 퀵정렬 완성

합병정렬(merge sort) 방식 합병정렬 과정 정렬하고자 하는 데이터의 모임을 비슷한 크기의 두 부분으로 반복해서 나눔 나뉘어진 부분 데이터들을 합병정렬 알고리즘을 이용하여 정렬 정렬된 부분 데이터들을 다시 합병 하나의 정렬된 데이터 모임으로 완성

합병 정렬 예제 [그림 10-19] 합병정렬 전 데이터 합병 정렬의 분할 과정 [그림 10-20] 합병정렬의 분할

합병 정렬 완성 [그림 10-21] 합병정렬된 데이터

합병 정렬 알고리즘

탐색(search) 데이터가 가지고 있는 특정한 키(key)를 찾는 작업 데이터는 레코드(record) 형태로 구성 레코드 : 특정한 필드들의 모임 필드(field) : 데이터가 가지고 있는 특정한 값들을 의미 키(key) : 각 데이터를 구분해주는 고유한 필드

선형탐색(linear search) 방식 이해하기 쉽고 간단한 탐색 알고리즘 순차탐색(sequential search)이라고도 함 선형탐색은 주어진 데이터의 조작없이 순서대로 데이터를 탐색하는 방법

선형 탐색 알고리즘

이진탐색(binary search) 방식 정렬되어 있는 데이터에서 원하는 값을 찾을 때 효과적인 탐색 방법 정렬된 데이터의 중간 값을 찾는 값과 비교하여 그 값이 작은 쪽에 속하는지 큰 쪽에 속하는지를 판단하면서 원하는 값을 찾는 탐색 방법

이진탐색트리(binary search tree) 방식 데이터의 탐색뿐만 아니라 삽입과 삭제도 편리하게 진행할 수 있는 방식 이진탐색트리는 정렬된 데이터뿐만 아니라 정렬되지 않은 데이터도 트리 형태로 구현하여 이진탐색으로 원하는 값을 탐색 탐색을 위해 데이터를 트리 형태로 구현

이진 탐색 트리 예제 이진 탐색 트리 완성 [그림 10-26] 이진탐색트리로 나타낼 데이터 [그림 10-27] 이진탐색트리 완성

이진탐색트리에서의 탐색 [그림 10-28] 이진탐색트리의 탐색

알고리즘 복잡도(complexities of algorithm) 알고리즘이 수행되는 데 필요한 시간과 공간을 측정하는 작업 알고리즘이 실행되는 데 필요한 시간과 기억장소의 양을 측정하는 작업 알고리즘을 보고 분석하여 판단하는 계산 값 Big-Oh 표기법 알고리즘 복잡도를 대문자 O를 사용하여 표기

Big-Oh 표기법 f 와 g 를 음수 값을 갖지 않는 함수라 하자. 이때 n≥n0인 모든 자연수 n에 대하여 f(n)≤c·g(n)가 되는 양의 상수 c와 n0가 존재하면 f(n) = O(g(n))이라고 한다.

다양한 복잡도 함수들 [표 10-2] 다양한 복잡도 함수들