1 / 21

Computer Algorithm 실습 - 이진 검색 , 버블 정렬 , 합병 정렬 -

Computer Algorithm 실습 - 이진 검색 , 버블 정렬 , 합병 정렬 -. Kim Hwan- Hee (hwanhee0920@kangwon.ac.kr) 2013. 4. 8. < 목 차 >. 이진 검색 알고리즘 개요 및 실습 버블 정렬 알고리즘 개요 및 실습 합병 정렬 알고리즘 개요 및 실습. 1. 이진 검색 알고리즘 (Binary Search). 이진 검색 알고리즘. 1. 이진 검색 알고리즘 (Binary Search). 이진 검색 알고리즘

jabari
Download Presentation

Computer Algorithm 실습 - 이진 검색 , 버블 정렬 , 합병 정렬 -

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computer Algorithm 실습- 이진 검색, 버블 정렬, 합병 정렬 - Kim Hwan-Hee (hwanhee0920@kangwon.ac.kr) 2013. 4. 8.

  2. < 목 차 > • 이진 검색 알고리즘 개요 및 실습 • 버블 정렬 알고리즘 개요 및 실습 • 합병 정렬 알고리즘 개요 및 실습

  3. 1. 이진 검색 알고리즘 (Binary Search) • 이진 검색 알고리즘

  4. 1. 이진 검색 알고리즘 (Binary Search) • 이진 검색 알고리즘 • 앞의 빨간 부분에 의해 O(log2N)의 시간복잡도를 가진다. • 이진 검색은 사전에 정렬되어 있어야 가능한 알고리즘이다. • 소스 코드의 실습은 될 수 있으면 Linux로 수행하세요. • Linux 코딩의 실력 향상을 위해서… • VI 명령어 사용법 다들 아시죠..?

  5. 1. 이진 검색 알고리즘 (Binary Search) • 이진 검색 소스 코드 ( 1/2 )

  6. 1. 이진 검색 알고리즘 (Binary Search) • 이진 검색 소스 코드 ( 2/2 )

  7. 2. 버블 정렬 알고리즘 ( Bubble Sort ) • 버블 정렬 알고리즘 void bubblesort( int n, keytype S[ ] ) { index i, j; for( i = 1; i <= n-1; i++ ) { for( j = 1; j <= (n-i); j++ ) { if(S[j] > S[j+1]) { exchange S[j] and S[j+1] } } } }

  8. 2. 버블 정렬 알고리즘 ( Bubble Sort ) • 버블 정렬 알고리즘 • 앞의 빨간 부분에 의해 O(N2)의 시간 복잡도를 가진다. • 버블 정렬의 경우 합병 정렬(Merge Sort), 버블 정렬(Bubble Sort), 빠른 정렬(Quick Sort) 알고리즘 중 가장 좋지 않은 효율을 보인다.

  9. 2. 버블 정렬 알고리즘 ( Bubble Sort ) • 버블 정렬 소스 코드 ( 1/2 )

  10. 2. 버블 정렬 알고리즘 ( Bubble Sort ) • 버블 정렬 소스 코드 ( 2/2 )

  11. 3. 합병 정렬 알고리즘 ( Merge Sort ) • 합병 정렬 알고리즘 < 알고리즘 함수 > Divide 기능 = mergesort( ) Merge 기능 = merge( )

  12. 3. 합병 정렬 알고리즘 ( Merge Sort ) • 합병 정렬 알고리즘( 1/2 )

  13. 3. 합병 정렬 알고리즘 ( Merge Sort ) • 합병 정렬 알고리즘( 2/2 )

  14. 3. 합병 정렬 알고리즘 ( Merge Sort ) • 합병 정렬 알고리즘 • mergesort() 함수의 경우 빨간 부분에 의해 O(logN)의 시간 복잡도를 가진다. • merge() 함수의 경우 빨간 부분에 의해 O(N)의 시간 복잡도를 가진다. • 따라서 합병 정렬 알고리즘은 O(NlogN)의 시간 복잡도를 가진다.

  15. 3. 합병 정렬 알고리즘 ( Merge Sort ) • 합병 정렬 소스 코드 ( 1/3 )

  16. 3. 합병 정렬 알고리즘 ( Merge Sort ) • 합병 정렬 소스 코드 ( 2/3 )

  17. 3. 합병 정렬 알고리즘 ( Merge Sort ) • 합병 정렬 소스 코드 ( 3/3 )

  18. 3. 합병 정렬 알고리즘 ( Merge Sort ) • 왜 동적 할당(malloc)을 하는 것인가? • 코딩 좀 한다고 자랑하기 위해서...? No. • 그냥 심심해서...? ㅡ.ㅡ........ No. • 정답은 배열 U와 V의 크기 지정 시 동적 할당 없이 지정 불가하기 때문이다. • int U[h]; int V[m] -> 불가능. ( 변수 생성 시 크기는 상수 지정 ) • 따라서 그림과 같이 동적 할당을 사용해야 함.

  19. cf) 버블 정렬과 합병 정렬 비교 N2 NlogN < 실제 실험 결과 > < 예측 시나리오 >

  20. cf) 시간 측정 방법 • clock_t자료형의 변수 start, end 선언 • 각 함수의 부분 전에 start = clock(); • 각 함수의 부분 후에 end = clock(); • ex) start = clock(); mergesort(n, S); end = clock(); • 그 후 time_t자료형의 변수 d_time에 차이 값 저장 • ex) d_time = ( (double)(end-start) ) /CLOCKS_PER_SEC; • 위 자료형을 선언하기 위해서는 time.h헤더 파일 포함

More Related