정렬(Sorting)과 해싱(Hashing)

Slides:



Advertisements
Similar presentations
비즈쿨 - 정 성 욱 - - 금오공고 비즈쿨 - 정 성 욱 1. 나는 각 단원들의 활동들에 성실하게 참여 하겠습니다. 우리의 다짐 2. 나는 나와 전체의 발전을 위해 각 멘토들의 지도에 순종하겠습니다. 3. 나는 각 단원들을 숙지함으로써 비즈니스 마인드를 함양하고 자신의.
Advertisements

노인복지론 담당교수 : 최 병태 교수님 학과 : 보건복지경영학과 학번 : 이름 : 김 태인 날짜 :
㈜ 금산산업 회사 소개서. 회사 소개 회사 개요 회사 연혁 공장약도 제품 소개 원료 관리 필렛 작업 염 ( 소금 ) 침지 공정 급속동결 및 진공 포장 거래처 LIST 거래처별 매출 실적 공장사진 목 차.
© Ian Sommerville 2004Software Engineering, 7th edition. Chapter 10 Slide 1 정형 명세 배재대학교 멀티미디어 정보공학 연구실 발표자 : 이 상 조
경비원운용 MANUAL 향우종합관리. 경비원의 임무  기본임무 영업장 내. 외부의 경비 객장 내 질서유지 및 정리정돈 현금 수송 시 안전한 현금보호  보조임무 고객의 안내 및 서비스.
1. 자료구조 개념 (1) 자료구조의 개요 1) 자료구조 ① 일련의 자료들을 조직하고 구조화하는 것 ② 자료의 표현과 그것과 관련된 연산 2) 자료구조에 따라 저장공간의 효율성과 프로그램의 실행시간이 달라짐 3) 어떠한 자료구조에서도 필요한 모든 연산들을 처리하는 것이.
C++ Espresso 제3장 배열과 포인터.
미국경제의 신용위기가 한국경제에 미치는 영향
8. 파일 인덱스: 탐색트리 (Search Tree)
초·중등학교 학교정보공시제도 안내 2010년 3월 23일 정보화담당관 정보운영담당.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 1 강원대학교 컴퓨터과학전공 문양세.
쉽게 배우는 알고리즘 6장. 해시 테이블Hash Table.
10장 정렬.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
[INA470] Java Programming Youn-Hee Han
쉽게 배우는 알고리즘 3장. 정렬Sorting
부분집합의 합 구하기 문제 부분집합의 합 구하기(Sum-of-Subsets) 문제
CHAP 9 : 정렬.
Internet Computing KUT Youn-Hee Han
Ch. 10 Algorithm Efficiency & Sorting
1과목 데이터베이스 강사 이 민 욱.
Chapter 9 정렬(sorting) SANGJI University Kwangman KO
CHAP 9:정렬 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
CHAP 11: 해싱 순천향대학교 하상호.
제 7 장 정렬.
19 장 호스트 대 호스트 전송: 인터네트워킹, 주소 지정, 라우팅
12 검색.
정렬과 합병.
CHAP 11: 해싱 순천향대학교 하상호.
자료구조(SCSC) Data Structures
CHAP 11 : 해싱 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
나이스 진로정보 초‧중‧고 연계 서비스 안내 (수) 한국교육학술정보원 교육행정부 김지광 선임연구원
Ch.02 Divide and Conquer (분할정복)
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
칼빈의 생애와 개혁자로의 변모 사학과 김종식.
CHAP 9: 정렬 (part 2) 순천향대학교 컴퓨터학부 하 상 호.
Chapter 01 자료 구조와 알고리즘.
[CPA340] Algorithms and Practice Youn-Hee Han
국제의료관광 관련 법, 제도.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 09. C언어의 핵심! 함수!
선택 정렬 #define SWAP(x, y, t) {(t) = (x); (x) = (y); (y) = (t);}
해쉬함수 충돌해결법과 특징 강원대학교 컴퓨터과학과 이해원.
프로그래밍 기초와 실습 Chapter 11 Recursion.
해시와 해시 함수.
7장. 해시 테이블Hash Table.
CHAP 11 : 해싱.
CHAP 11 : 해싱.
Chapter 4 변수 및 바인딩.
본선대회 일정안내.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
남아메리카 선교 김수정, 이하정 전희진, 장성경.
Chapter 11 해쉬(Hash) SANGJI University Kwangman KO
C언어 응용 제 15 주 검색.
합병정렬(Merge Sort) (1/2) 문제: n개의 정수를 (비내림차순으로) 정렬하시오.
CHAP 9:정렬 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
CHAPTER 9-1 한국의 사회복지정책 - 사회보험제도 -
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
알고리즘(Algorithm) 유비쿼터스 컴퓨팅학과 교수 송 창근
제 8 장 계산복잡도 개론 검색 문제 알고리즘 강의 슬라이드 8 검색 문제
CHAPTER 05 프로세스 및 프로그램 설계.
Ⅲ. 남부 지방의 생활 제 4장 관광산업이 발달한 제주도 주제1. 화산 활동으로 이루어진 섬, 따뜻한 기후.
알고리즘(Algorithm) – Divide and Conquer (분할정복)
전류는 자계에서 힘을 받는다 기계공학교육 박지훈 황인석 한만혁 이덕균.
청렴교육 강사양성 표준강의 6 기타 반부패 청렴정책.
房思琪的初恋乐园 ‘팡쓰치’로 보는 문학의 힘 정은비.
북한학 과목소개 최 장 옥 교 수 연평도 앞 월래도 시찰.
박 현 미 울산여자상업고등학교 창업포스터 만들며 포토샵과 친해지기 박 현 미 울산여자상업고등학교.
Chapter 2. 경영분석을 위한 재무제표 재무제표의 공시.
제 7 장 정렬.
경찰학 세미나 제 5 강 경찰관직무집행법 2조 5호의 의미 신라대학교 법경찰학부 김순석.
Presentation transcript:

정렬(Sorting)과 해싱(Hashing) CHAPTER 7 정렬(Sorting)과 해싱(Hashing)

7.1 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다. 파일을 하나의 기준 값을 중심으로 두 개의 서브파일로 분할하여, 앞쪽의 파일 내의 모든 키는 뒤쪽의 파일 내의 어떤 키보다도 작도록 분할한다. 나누어진 서브파일에 대해서 동일한 방식의 분할을 서브파일의 크기가 1이 될 때까지 재귀적으로 수행하면 최종적으로 서브파일의 크기가 1이 되면 완전히 정렬된 상태의 파일이 구성된다.

2가지 파일 분할방식 0번째 키를 기준값으로 설정하는 방식 1번째 키부터 시작 2, 3번 방향으로 기준값보다 큰 키값을 만나면 그 키를 선택, n-1번째 키부터 시작 n-2, n-3번 방향으로 기준값보다 작은 키 값을 가진 키를 만나면 그 키를 선택하여 두 키 값을 교환한다. 선택되었던 두 키의 다음 위치에서부터 동일한 과정을 반복한다. 양쪽 방향에서 진행하는 순서가 교차하면 정지한다. 가장 나중에 선택한 기준 키 값보다 작은 키를 기준 키와 교환한다. 2. 기준 키 값을 파일내의 중간위치에 있는 키 값으로 설정하는 방식 기준 키 값의 앞에서 기준 키 값보다 큰 값을, 뒤에서 기준 키 값보다 작은 값을 선택하여 교환한다.

퀵 정렬은 하나의 파일을 두 개의 파일로 나누어질 때 두 서브 파일의 크기가 비슷하게 되면 비교의 횟수가 감소하게 된다 퀵 정렬은 하나의 파일을 두 개의 파일로 나누어질 때 두 서브 파일의 크기가 비슷하게 되면 비교의 횟수가 감소하게 된다. 그러나 두 서브파일의 크기의 차가 크거나 또는 아예 하나의 서브파일 밖에 만들어지지 않는 경우 수행시간이 길어진다. 예를 들어, 정렬하고자 하는 순서의 역순으로 데이터가 나열되어 있는 경우에는 서브파일이 항상 하나 밖에 생성되지 않는다.

퀵 정렬의 수행시간 • 평균 비교횟수가 nLog2n => O(nLog2n)

• 최악의 경우(서브파일이 하나만 존재) => O(n2) void quick_sort(int list[], int f, int n) {        //f는 시작위치, n은 끝 위치     int i, j, k, temp; void quick_sort(int list[], int f, int n);    void prnt(int list[]); if(f < n) {         i=f+1;         j=n;         k=list[f];                       //k는 기준값         if(i==j) {             if(list[j] < k) {                 temp=list[j];                 list[j]=k;                 list[f]=temp; }       } while(i < j) {             while((list[i] <= k) && (i<n))                 i++;             while(list[j] >= k && (j>f))                 j--;             if(i < j) {                  //기준값보다 큰, 작은 값을 교환                 temp=list[i];                 list[i]=list[j];                 list[j]=temp;             }         }         if(i > j) {             temp=list[f];                //기준값과 교환             list[f]=list[j];             list[j]=temp;         }         quick_sort(list, f, j-1);        //왼쪽 서브파일에 대해 반복         quick_sort(list, j+1, n);        //오른쪽 서브파일에 대해 반복     } }

• 최악의 경우(서브파일이 하나만 존재) => O(n2)

7.1 퀵정렬(Quick Sort) 주어진 데이터 파일을 피봇(pivot) 값에 의해 부분 파일로 분할하여 정렬하는 방법 정렬해야 될 데이터 파일 내의 중간에 있는 키 값에 의해 두 개의 부분 파일로 나눈다. 나누어진 부분 파일들을 각각 정렬한 다음 다시 합친다. 파일 내에 있는 임의의 데이터 x가 위치 i에 재배치되는 조건 ⅰ) 처음부터 i-1 번째 위치의 모든 데이터는 피봇의 값 x보다 같거나 작다.  ⅱ) i+1 번째 위치에서 파일의 마지막 위치까지 있는 모든 데이터는 피봇의 값 x보다 같거나 크다.

7.1 퀵정렬(Quick Sort) 알고리즘

7.1 퀵정렬(Quick Sort) 데이터 파일이 [31 10 42 6 66 16 64 20 53 24]인 키 값을 갖는 10개의 레코드들로 구성된 파일의 퀵정렬 알고리즘 수행 과정

7.2 합병 정렬(Merge Sort) 이미 정렬된 두 개의 파일을 합쳐서 새로운 정렬된 파일을 만드는 방법이다. 정렬된 B와 C를 합쳐서 새로운 정렬 파일 만드는 방법. 알고리즘

7.3 해싱(Hashing) 해싱(hashing)이란? 해싱 함수 f 란? 레코드가 테이블에 저장되어 있을 때 레코드의 키 값을 주면, 이 키 값을 어떤 수학적 함수에 의하여 테이블의 주소로 변환 시켜서 원하는 레코드를 탐색하는 것. 해싱 함수 : 레코드의 키 값을 테이블의 주소로 변화시키는 수학적 함수. 해싱 테이블 : 레코드들이 테이블 형태로 저장되어 해싱 함수에 의해 접근, 호출될 때 이 테이블을 해싱 테이블이라 함. 해싱 함수 f 란? 레코드의 키를 해싱 테이블의 주소로 변환시키는 함수 X를 레코드들의 키들의 집합, Y를 해싱 테이블의 주소들의 집합이라고 할 때 f는 f : X -> Y 인 함수이다.

7.3 해싱(Hashing) 정적 해싱(Static Hashing) 이름(identifier)을 해싱 테이블(Hashing Table)이라는 일정크기의 테이블에 저장할 때 이름의 저장 주소 또는 위치 결정을 위해 해싱함수 f를 사용한다. x를 M으로 나눈 모듀러 값으로 변환하는 해싱 함수

7.3 해싱(Hashing) 정적 해싱(Static Hashing) 해싱 함수를 이용하여 저장할 때 이미 다른 레코드가 저장되어서 충돌이 발생하면 다음과 같은 해싱법을 사용. 개방 주소 방법(Linear Open Addressing) : 다음 빈 공간(table)에 저장 체이닝(Chaining) 방법 : 포인터를 이용하여 같은 해싱 함수를 갖는 레코드를 연결리스트로 연결

7.3 해싱(Hashing) (2) 동적 해싱(Dynamic Hashing) DBMS와 같이 해싱 테이블을 모두 주기억장치에 둘 때 주기억장치 공간이 낭비되는데, 빠른 검색시간을 유지하면서 파일의 크기가 동적으로 증가 또는 감소할 수 있도록 확장한 기법이 동적 해싱이다. 2진(Binary) 표현의 자리 수를 이용하여 확장한 예)