12 검색.

Slides:



Advertisements
Similar presentations
19 장. 보건통계 (Public Health Statistics). 제 1 절. 보건통계의 정의 ▶ 보건통계의 의미 1. 지역사회나 국가의 보건 수준및 보건 상태 2. 보건사업의 필요성 결정 3. 보건입법을 촉구하며, 보건사업에 대한 공공지원을 촉진하게 할수 있음 4.
Advertisements

문화컨텐츠의 현지화 무역학과 / 4조 이영화 장세은 조하영 한민구 국제마케팅(N) 강명수 교수님.
1 ‘ 우리나라의 주요공업 ’ - 정도웅, 주민혁, 안수진, 백경민, 엄다운, 박경찬 -.
수유부의 약물복용 시 주의점 발표자 조기성. 모유 수유의 장점 모유 수유의 장점은 ? 위장관 질환 발생감소 영아 돌연사 발생감소 아토피 질환 발생감소 정서적 안정.
일 시 : (목) 장 소 : 문산종합사회복지관장) 파주시문산종합사회복지관 기관안내.
목차 Ⅰ. 과제 추진 배경 Ⅱ. 현상 분석 Ⅲ . 과제 추진 활동 및 성과 Ⅳ. 기대효과 Ⅴ. 향후 추진 계획.
어서와 Java는 처음이지! 제3장선택과 반복.
10. 예외 처리.
공부할 내용 조상들이 살던 곳 자연과 잘 어울리는 한옥 지방에 따라 서로 다른 집의 모양 섬 지방의 집
사랑, 데이트와 성적 자율성 :데이트 성폭력!!! 성폭력예방교육 전문강사 / 여성학 전공 신 순 옥.
1636 쇼핑몰.
퇴계와 율곡의 사회사상 비교 남 일 재 동서대학교 교수/ 정치학 박사 1. 퇴계 이황과 율곡 이이의 약전(略傳)
7장 배열 ②.
어서와 Java는 처음이지! 제4장 배열.
501. 군인들의 세상 502. 민정 이양과 한일회담 이선용.
쌍용차 회생계획안을 통한 투기자본(=먹튀자본) 수강과목: 회 계 학 원론 담당교수: 박 성 환 교수님
제6장 제어(Control) 6.1 구조적 프로그래밍(Structured Programming)
각각의 공정별 물류 이송 흐름도, 공정시간, 속도 시뮬레이션 프로그램 개발
실전 프로젝트 2 : 숫자야구 숫자 야구를 구현해보자.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 1 강원대학교 컴퓨터과학전공 문양세.
쉽게 배우는 알고리즘 6장. 해시 테이블Hash Table.
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
10장 정렬.
[INA470] Java Programming Youn-Hee Han
제7장 제어구조 I – 식과 문장.
강의 #7 트리(Tree).
쉽게 배우는 알고리즘 5장. 검색트리
7 스택.
Power Java 제10장 배열.
This, static, final 지정 예약어 자바 4대 중첩 클래스
김 정 석 Web Programming 김 정 석
주소록 프로그램.
6장 객체-지향 설계 ①.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
IT CookBook, 자바로 배우는 쉬운 자료구조
Tree & Heap SANGJI University Kwangman Ko
행정학과 김수민 중국 춘절의 교통문제.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
6장 객체-지향 설계 ①.
어서와 Java는 처음이지! 제4장 배열 IT응용시스템공학과 김형진 교수.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
[CPA340] Algorithms and Practice Youn-Hee Han
Chap. 14 성능향상시키기 PS Lab. 이지연.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
JA A V W. 04.
정치개혁의 가능성 논의 권력구조 개편을 통하여 본 -개헌을 통한 정부형태의 변화를 중심으로 [한국정치론] 윤성이 교수님
7장. 해시 테이블Hash Table.
자바 5.0 프로그래밍.
Chapter 02. 소프트웨어와 자료구조.
Chapter 11 해쉬(Hash) SANGJI University Kwangman KO
C언어 응용 제 15 주 검색.
CHAP 12:탐색 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
CHAP 12 : 탐색.
CHAP 12 : 탐색 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
노년기 발달 장안대 행정법률과 세류반 정 오 손
자료구조론 12장 검색(search).
C# 10장. 참조형.
제 8 장 계산복잡도 개론 검색 문제 알고리즘 강의 슬라이드 8 검색 문제
태국 문학 욜라다 왓짜니 싸란차나 팟차라와라이 끼따야펀 르앙다우 타니다.
세일즈의 원칙과 기술.
강의 #11 탐색(Search).
탐색 선형 탐색, 이진 탐색, 이진 탐색 트리.
Java 5장. 객체지향 개념 public class SumTest {
CHAP 8:우선순위큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
경영학의 상황학파에 대해서… 경제학과 3학년 최준용 회계학과 4학년 진현빈
워밍업 실뭉치 전달게임.
음파성명학 최종욱.
Presentation transcript:

12 검색

이 장에서 다룰 내용 검색 1 순차 검색 2 이진 검색 3 이진 트리 검색 4

검색 검색(search) 컴퓨터에 저장한 자료 중에서 원하는 항목을 찾는 작업 탐색 키를 가진 항목을 찾는 것 검색 성공 - 원하는 항목을 찾은 경우 검색 실패 – 원하는 항목을 찾지 못한 경우 탐색 키를 가진 항목을 찾는 것 탐색 키(search key) - 자료를 구별하여 인식할 수 있는 키 삽입/삭제 작업에서의 검색 원소를 삽입하거나 삭제할 위치를 찾기 위해서 검색 연산 수행

검색 검색 방법 수행 위치에 따른 분류 검색 방식에 따른 분류 검색 방법의 선택 내부 검색 - 메모리 내의 자료에 대해서 검색 수행 외부 검색 - 보조 기억 장치에 있는 자료에 대해서 검색 수행 검색 방식에 따른 분류 비교 검색 방식(comparison search method) 검색 대상의 키를 비교하여 검색하는 방법 순차 검색, 이진 검색, 트리 검색 계산 검색 방식(non-comparison method) 계수적인 성질을 이용한 계산으로 검색 하는 방법 해싱 검색 방법의 선택 자료 구조의 형태와 자료의 배열 상태에 따라 최적의 검색 방법 선택

순차 검색 순차 검색(sequential search, 선형 검색(linear search)) 일렬로 된 자료를 처음부터 마지막까지 순서대로 검색하는 방법 가장 간단하고 직접적인 검색 방법 배열이나 연결 리스트로 구현된 순차 자료 구조에서 원하는 항목을 찾는 방법 검색 대상 자료가 많은 경우에 비효율적이지만 알고리즘이 단순하여 구현이 용이함

순차 검색 정렬되지 않은 순차자료구조에서의 순차 검색 검색 방법 순차 검색 예) 검색 성공의 경우 첫 번째 원소부터 시작하여 마지막 원소까지 순서대로 키 값이 일치하는 원소가 있는지를 비교하여 찾는다. 키 값이 일치하는 원소를 찾으면 그 원소가 몇 번째 원소인지를 반환 마지막 원소까지 비교하여 키 값이 일치하는 원소가 없으면 찾은 원소가 없는 것이므로 검색 실패 순차 검색 예) 검색 성공의 경우

순차 검색 순차 검색 예) 검색 실패의 경우

순차 검색 정렬되어있지 않은 자료에 대한 순차검색 알고리즘 비교횟수 - 찾고자 하는 원소의 위치에 따라 결정 찾는 원소가 첫 번째 원소라면 비교횟수는 1번, 두 번째 원소라면 비교횟수는 2번, 세 번째 원소라면 비교횟수는 3번, 찾는 원소가 i번째 원소이면 i번, … 정렬되지 않은 원소에서의 순차 검색의 평균 비교 횟수 = 1/n(1+2+3+ … + n) = (n+1)/2   평균 시간 복잡도 : O(n) sequentialSearch1(a[],n, key) i←0; while (i<n and a[i]≠key) do { i←i+1; } if (i<n) then return i; else return -1; end sequentialSearch1() [알고리즘 12-1]

순차 검색 정렬되어 있는 순차자료구조에서의 순차 검색 검색 방법 순서대로 검색하면서 키 값을 비교하여, 원소의 키 값이 찾는 키 값보다 크면 찾는 원소가 없는 것이므로 더 이상 검색을 수행하지 않고 검색종료 정렬되어있는 자료에 대한 순차 검색 예)

순차 검색 정렬되어있는 자료에 대한 순차검색 알고리즘 비교횟수 - 찾고자 하는 원소의 위치에 따라 결정 검색 실패의 경우에 평균 비교 횟수가 반으로 줄어든다. 정렬되어있는 원소에서의 순차 검색의 평균 비교 횟수 = 1/n(1+2+3+ … + n) x 1/2 = (n+1)/4   평균 시간 복잡도 : O(n) sequentialSearch2(a[],n, key) i←0; while (a[i]<key) do { i←i+1; } if (a[i]=key) then return i; else return -1; end sequentialSearch2() [알고리즘 12-2]

순차 검색 순차 검색 프로그램 01 class Search{ 02 public void sequentialSearch1(int a[], int size, int key){ 03 int i=0; 04 System.out.printf("\n %d를 순차검색하여라! ->> ", key); 05 while(i<size && (a[i]!=key)) i++; 06 if(i<size) 07 System.out.printf("%d 번째에 검색 성공! \n", i+1); 08 else 09 System.out.printf("%d 번째에 검색 실패! \n", i+1); 10 } 11 12 public void sequentialSearch2(int a[], int size, int key){ 13 int i=0; 14 System.out.printf("\n %d를 순차검색하여라! ->> ", key); 15 while(a[i] < key) i++; 16 if(a[i] == key) 17 System.out.printf("%d 번째에 검색 성공! \n", i+1); [예제 12-1] >> 계속

순차 검색 18 else 19 System.out.printf("%d 번째에 검색 실패! \n", i+1); 20 } 21 } 20 } 21 } 22 23 class Ex12_1{ 24 public static void main(String args[]){ 25 int a1[] = {8, 30, 1, 9, 11, 19, 2}; 26 int size = a1.length; 27 Search S = new Search(); 28 System.out.printf("\n정렬되지 않은 자료에서의 순차검색 >> "); 29 S.sequentialSearch1(a1, size, 9); 30 S.sequentialSearch1(a1, size, 6); 31 32 int a2[] = {1, 2, 8, 9, 11, 19, 29}; 33 size = a2.length; 34 System.out.printf("\n정렬되어 있는 자료에서의 순차검색 >> "); 35 S.sequentialSearch2(a2, size, 9); 36 S.sequentialSearch2(a2, size, 6); 37 } 38 } [예제 12-1]

순차 검색 실행 결과

순차 검색 색인 순차 검색(index sequential search) 정렬되어있는 자료에 대한 인덱스 테이블(index table)을 추가로 사용하여 탐색 효율을 높인 검색 방법 인덱스 테이블 배열에 정렬되어있는 자료 중에서 일정한 간격으로 떨어져있는 원소들을 저장한 테이블 자료가 저장되어있는 배열의 크기가 n이고 인덱스 테이블의 크기가 m일 때, 배열에서 n/m간격으로 떨어져있는 원소와 그의 인덱스를 인덱스 테이블에 저장 검색 방법 indexTable[i].key ≤ key < indexTable[i+1].key를 만족하는 i를 찾아서 배열의 어느 범위에 있는지를 먼저 알아낸 후에 해당 범위에 대해서만 순 차 검색 수행

순차 검색 색인 순차 검색 예 검색 대상 자료 : {1, 2, 8, 9, 11, 19, 29} 크기가 3인 인덱스 테이블 작성 인덱스 테이블에서 먼저 탐색키를 검색하여 검색 범위를 확인하고, 해당 범위에 대해서만 순차 검색 실행

순차 검색 색인 순차 검색의 성능 인덱스 테이블의 크기에 따라 결정 색인 순차 검색의 시간 복잡도 : O(m + n/m) 인덱스 테이블의 크기가 줄어들면 배열의 인덱스를 저장하는 간격이 커지므로 배열에서 검색해야하는 범위도 커진다. 인덱스 테이블의 크기를 늘리면 배열의 인덱스를 저장하는 간격이 작아지므로 배열에서 검색해야하는 범위는 작아지겠지만 인덱스 테이블을 검색하는 시간이 늘어나게 된다. 색인 순차 검색의 시간 복잡도 : O(m + n/m) 배열의 크기 : n, 인덱스 테이블의 크기 : m

이진 검색 이진 검색(binary search) 이분 검색, 보간 검색(interpolation search)이라고도 함 자료의 가운데에 있는 항목을 키 값과 비교하여 다음 검색 위치를 결정하여 검색을 계속하는 방법 찾는 키 값 > 원소의 키 값 : 오른쪽 부분에 대해서 검색 실행 찾는 키 값 < 원소의 키 값 : 왼쪽 부분에 대해서 검색 실행 키를 찾을 때까지 이진 검색을 순환적으로 반복 수행함으로써 검색 범위를 반으로 줄여가면서 더 빠르게 검색 정복 기법을 이용한 검색 방법 검색 범위를 반으로 분할하는 작업과 검색 작업을 반복 수행 정렬되어있는 자료에 대해서 수행하는 검색 방법

이진 검색 이진 검색의 예

이진 검색 이진 검색의 예

이진 검색 이진 검색 알고리즘 삽입이나 삭제가 발생했을 경우에 항상 배열의 상태를 정렬 상태로 유지하는 추가적인 작업 필요 시간 복잡도 : O(log2n) binarySearch(a[], low, high, key) middle ← (low+high)/2; if (key = a[middle]) then return i; else if (key < a[middle]) then binarySearch(a[], low, middle-1, key); else if (key > a[middle]) then binarySearch(a[], middle+1, high, key); else return -1; end binarySearch() [알고리즘 12-3]

이진 트리 검색 이진 트리 검색(binary tree search) 8장에서 설명한 이진 탐색 트리를 사용한 검색 방법 원소의 삽입이나 삭제 연산에 대해서 항상 이진 탐색 트리를 재구성하는 작업 필요

IT CookBook 자바로 배우는 쉬운 자료구조 12장 끝 Thank You ! IT CookBook 자바로 배우는 쉬운 자료구조 12장 끝