달력

8

« 2020/8 »

  •  
  •  
  •  
  •  
  •  
  •  
  • 1
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  

 

 

이진 검색(binary search)

·       배열의 검색할 범위를 반복적으로 절반씩 줄여가면서 검색하기 때문에 검색속도가 상당히 빠릅니다.

·       배열의 길이가 많이 늘어나도 검색 횟수는 몇회 밖에 늘어나지 않으므로 큰 배열을 검색할 때 유용합니다.

·       하지만 배열이 정렬이 되어있어야 사용할 수 있습니다.

 

Posted by codedragon codedragon

댓글을 달아 주세요

 

 

이진 탐색 트리(Binary Search Tree)

모든 노드는 최대 두 개의 자식노드를 가질 수 있습니다.

바이너리 서치 트리는 어느 노드에서든 그 노드의 왼쪽 부분 트리의 모든 원소는 그 노드의 값보다 작거나 같고, 오른쪽 부분 트리에는 해당 값보다 큰 값이 저장되어 있습니다.

정렬, 검색, 범위 검색(range search)에 높은 성능을 보여주는 자료구조입니다.

 

 

 

 

8, 5, 20의 순서로 저장된 이진 트리 구조 도식도

간단하게 도식화한 이진 트리 구조


 

실제로 저장되는 이진 트리 구조


 

 

 

 

이진 검색 트리 원리

첫번째로 저장되는 값은 root노드가 됩니다.

두번째 저장되는 값은 트리의 root부터 시작해서 값의 크기를 비교해서 트리를 따라 내려가게 됩니다. 비교해서 작은 값은 왼쪽에 큰 값은 오른쪽에 저장하게 됩니다.

모두 값이 트리에 저장되게되면 가장 왼쪽에 있는 노드는 제일 작은 값을 가지고 가장 오른쪽의 노드는 제일 큰 값을 가지게 됩니다.

 

 

8, 5, 20, 2, 6의 순서로 값 저장하기

8을 트리의 ‘루트’, 즉 맨 위 머리부분으로 배치했습니다. 8의 두 자식 노드는 5 20이고, 5 2 6이라는 두 자식 노드를 갖습니다.

트리에서 루트 노드에는 8의 값이 저장돼 있고, 왼쪽 부분 트리의 모든 값은 5, 2, 6으로 8보다 작고, 20 8보다 큽니다.

 


 

 

단계

도식도

8 저장


 

5 저장


 

20 저장


 

2 저장


 

6 저장


 

 

 


Posted by codedragon codedragon

댓글을 달아 주세요

 

Comparable compareTo 구현 사례 -Integer 랩퍼클래스

 

Integer 클래스의 코드

C:\CodeLab\src\java\lang\Integer.java


 


Comparable compareTo(T o)추상메소드를 구현하고 있습니다.

Integer객체에 저장된 int(value)을 비교해서 작으면 -1, 같으면 0, 크면 1을 반환하는 것을 알 수 있습니다.

TreeSet Integer인스턴스를 저장했을 때 정렬되는 기준이  compareTo()메소드에 의한 것입니다.

 

Posted by codedragon codedragon

댓글을 달아 주세요

 

 

The Sound of Sorting - "Audibilization" and Visualization of Sorting Algorithms

http://panthema.net/2013/sound-of-sorting/


 

 

Source code archive

http://panthema.net/2013/sound-of-sorting/sound-of-sorting-0.6.5/src/


https://github.com/bingmann/sound-of-sorting


 

 

 

 

15 Sorting Algorithms in 6 Minutes

https://www.youtube.com/v/kPRA0W1kECg

 


Posted by codedragon codedragon

댓글을 달아 주세요