일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- sql injection
- 사칙연산
- 파이썬
- document
- property
- burp suite
- 백준 알고리즘
- 조건문
- xss game
- python
- 메소드
- 김성엽 대표님
- blind sql injection
- jQuery
- Pwndbg
- element 조회
- github
- htmlspecialchars
- object
- 배열
- 백준 파이썬
- suninatas 풀이
- IF문
- 객체
- 자바스크립트
- 함수
- lord of sql injection
- 포인터
- xss game 풀이
- window
Archives
- Today
- Total
power-girl0-0
이진 탐색 (Binary Search) 본문
728x90
wargame 풀다가, 이진 탐색을 이용한 문제라서,
간단하게 이진 탐색 코드를 짜보았습니다.
1. 이진탐색이란?
(1) 정의
- 오름차순으로 정렬된 리스트에서 특정 위치를 찾는 알고리즘이다.
- 비교 한 번할 때마다, 탐색 범위가 50%로 줄어든다.
(2) 과정
① 배열의 중간 값을 선택하여 찾고자하는 값과 비교한다.
② 찾고자 하는 값이 중간 값보다 크면 오른쪽을 대상으로, 작으면 왼쪽을 대상으로 정하여 탐색한다.
③ 이는 값을 찾을 때까지 탐색하는 것을 반복한다.
2. Code
- 해당 코드는 9가 존재하는 인덱스 위치를 알아내는 코드로 작성되었다.
#include <stdio.h>
#include <stdbool.h>
int main(){
printf("\n =====================\n");
printf(" Binary Search!\n");
printf(" =====================\n\n");
int num[] = {1,2,3,4,5,6,7,8,9,10};
int key = 9;
int start = 0;
int end = (sizeof(num)/sizeof(int))-start;
int mid = 0;
while(true){
mid = (start+end)/2;
printf(" Now mid : %d\n", mid);
if(num[mid]<key){
start = mid;
}else if(num[mid]>key){
end = mid;
}else if(num[mid] == key){
printf("\n --------------------\n\n");
printf(" Find %d index : %d\n\n",num[mid],mid);
return 0;
}else{
printf("Error\n");
}
}
return 0;
}
3. 결과
잘못되거나 부족한 부분이 있다면 댓글 남겨주세요~!
피드백은 언제나 환영입니다~~( •̀ ω •́ )✧
728x90
'언어 > c언어' 카테고리의 다른 글
[Tips] Day9 (0) | 2021.01.30 |
---|---|
[Tips] Day8 (0) | 2021.01.28 |
[Tips] Day7 (0) | 2021.01.27 |
[Tips] Day 6 (0) | 2021.01.27 |
[Tips] Day 5 (0) | 2021.01.24 |
Comments