Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- nodejs
- DataStructure
- 블록체인
- Javascript
- javascript 게임
- vs code
- Blockmonkey
- 관계형데이터베이스
- 블록체인개론
- javascirpt
- 컴퓨터사이언스
- 생활코딩
- SQL
- javascript 초급
- 깃
- algorithum
- 블록몽키
- 프로그래밍
- hyperledger
- 파이썬 알고리즘
- 생활코딩 nodejs
- 자바스크립트
- mysql
- js
- hyperledger fabric
- 컴퓨터공학개론
- 제로초
- Nodejs 프로젝트
- al
- 하이퍼레저
Archives
- Today
- Total
Blockmonkey
[AL&DS] 선형검색, 이진검색 본문
1. 선형검색 (좌 -> 우 하나씩 탐색)
// 선형검색 : O(N)
func linearSearch(_ary []int, _find int) bool {
result := false
for i := 0; i < len(_ary); i++ {
fmt.Println("STEP : ", i+1)
if _ary[i] == _find {
result = true
break
}
}
return result
}
2. 이진검색 (MidPoint로 쪼개어 탐색)
// 이진검색 : O(logN)
func binarySearch(_ary []int, _find int) (bool, int) {
lower := 0
upper := len(_ary) - 1
result := false
resultIdx := 0
for i := 0; i < len(_ary); i++ {
if lower <= upper {
result = false
}
midpoint := (upper + lower) / 2
value_at_mid := _ary[midpoint]
switch {
case _find == value_at_mid:
result = true
resultIdx = midpoint
return result, resultIdx
case _find < value_at_mid:
upper = midpoint - 1
case _find > value_at_mid:
lower = midpoint + 1
}
}
return result, resultIdx
}
3. 비교
→ 선형검색 장점 : 정렬된리스트가 아니어도 사용 가능
→ 선형검색 단점 : O(N)의 시간복잡도를 가지며 원소수가 늘어나는만큼 단계수가 증가함
→ 이진검색 장점 : O(logN)의 시간복잡도를 가지며 선형검색보다 단계수가 적어 속도가 빠름
→ 이진검색 단점 : 정렬된리스트가 아니면 사용 불가능
'Web Development > CommonSense' 카테고리의 다른 글
| [AL&DS] 큐 (0) | 2022.11.12 |
|---|---|
| [AL&DS] 스택 (0) | 2022.11.12 |
| [AL&DS] 삽입정렬 (0) | 2022.11.12 |
| [AL&DS] 선형해결법 (0) | 2022.11.06 |
| [AL&DS] 버블정렬 (0) | 2022.11.06 |