[알고리즘] 순차탐색, 이진탐색

2018. 5. 28. 19:07・CS/Algorithm

#1 최대값 찾기


25 

15 

35 

60 

45 

80 

55 

75 



알고리즘 1 : 값들을 하나씩 모두 비교해가면서 최대값 찾기


알고리즘 2 : 토너먼트 방식


어떤 것이 효율적? => 몇 번의 비교연산을 해야 하는가?



#2 "뒤섞인" 카드에서 원하는 카드 찾기


데이터 찾기 => 탐색


A

4

5

7

10

J

K


순차적으로 왼쪽부터 하나씩 비교하며 탐색한다 => 순차탐색(Sequential search)


10

5

A

J

7

K

.  


∴ 6번 뒤집어서 K 발견




#3 "순서대로 나열"된 카드에서 10 찾기


A

4

5

7

10

J

K




 

 

 

 

 

 

 


 

 

 

 7

 .

 .

 .



임의로 정 중앙에 있는 카드를 하나 뒤집어 본다 => 이진탐색(Binary search)

순서대로 나열 되었으니까 뽑은 7번 카드 기준으로 오른쪽 카드만 확인한다






7

  

J

  


남은 오른쪽 카드 중 임의로 중간에 있는 카드를 뒤집는다





7

10

J

.


=> J 카드보다 10번 카드가 작으므로, 7번 카드와 J 카드 사이에 있는 카드가 10번이 된다


∴ 3번 뒤집어서 10번 카드 발견






※ 그렇다고 이진탐색이 순차탐색보다 효율성이 좋다고 말할 수 없다.


데이터가 뒤섞인 경우 순차탐색의 효율성이 좋고, 

순서가 나열된 데이터의 경우에서 이진탐색의 효율성이 좋다


∴ 데이터의 조건에 다라 효율적인 알고리즘이 다르다.






+ 알고리즘 설계 기법


주어진 문제 / 속성 / 조건 등 매우 다양한 알고리즘이 있지만! 일반적이고 범용적인 기법은 없다.


대표적인 설계기법은,

분할정복(divide-and-conquer)방법

동적프로그래밍(dynamic programming)방법

욕심쟁이(greedy)방법 

이 있다.

저작자표시 비영리 (새창열림)

'CS > Algorithm' 카테고리의 다른 글

[알고리즘] 순환알고리즘의 성능  (0) 2018.05.28
[알고리즘] 점근성능  (0) 2018.05.28
[알고리즘] 시간복잡도 (time complexity)  (0) 2018.05.28
[자료구조] 정의 / 알고리즘과 관계 / 기본적인 자료구조  (0) 2018.05.19
[알고리즘] 정의와 요건  (0) 2018.05.19
'CS/Algorithm' 카테고리의 다른 글
  • [알고리즘] 점근성능
  • [알고리즘] 시간복잡도 (time complexity)
  • [자료구조] 정의 / 알고리즘과 관계 / 기본적인 자료구조
  • [알고리즘] 정의와 요건
dev.hyejin
dev.hyejin
  • dev.hyejin
    혜진의 개발자 성장블로그
    dev.hyejin
  • 전체
    오늘
    어제
    • 분류 전체보기 (89)
      • 2024 데브캠프 (2)
      • 회고 (1)
      • 이슈해결 (3)
      • 기초학습 (13)
      • Frontend (20)
        • JavaScript (3)
        • Git, GitHub (3)
        • HTML, CSS (14)
      • Backend (8)
        • Database (4)
        • Java (4)
      • CS (16)
        • Network (10)
        • Algorithm (6)
      • Eng (16)
      • Tips (5)
  • 인기 글

  • 태그

    ER모델
    런타임
    점근성능
    객체
    box-sizing
    절대경로
    시간복잡도
    상대경로
    GitHub
    border-box
  • hELLO· Designed By정상우.v4.10.3
dev.hyejin
[알고리즘] 순차탐색, 이진탐색
상단으로

티스토리툴바