๐˜ฝ๐™ž๐™ฃ๐™–๐™ง๐™ฎ ๐™Ž๐™š๐™–๐™ง๐™˜๐™

uuuouuoยท2022๋…„ 7์›” 28์ผ
0
post-thumbnail

๐Ÿ“– ์ด๋ถ„ ํƒ์ƒ‰


  • ์ž๋ฃŒ์˜ ๊ฐ€์šด๋ฐ์— ์žˆ๋Š” ํ•ญ๋ชฉ์˜ ํ‚ค ๊ฐ’๊ณผ ๋น„๊ตํ•˜์—ฌ ๋‹ค์Œ ๊ฒ€์ƒ‰์˜ ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  ๊ฒ€์ƒ‰์„ ๊ณ„์† ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์ด๋ถ„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ์—์„œ ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ ˆ๋ฐ˜์”ฉ ์ขํ˜€๊ฐ€๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์ด์ง„ ํƒ์ƒ‰์€ ๋ฐฐ์—ด ๋‚ด๋ถ€์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ์–ด์•ผ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ๋ณ€์ˆ˜ 3๊ฐœ(start, end, mid)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒ์ƒ‰ํ•œ๋‹ค. ์ฐพ์œผ๋ ค๋Š” ๋ฐ์ดํ„ฐ์™€ ์ค‘๊ฐ„์  ์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋น„๊ตํ•ด์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ์ด์ง„ ํƒ์ƒ‰์˜ ๊ณผ์ •
  • ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(log N)

๐Ÿ’ฌ ํƒ์ƒ‰ ๊ณผ์ •


1. ์ž๋ฃŒ์˜ ์ค‘์•™ ์›์†Œ ๊ณ ๋ฆ„

2. ์ค‘์•™ ์›์†Œ ๊ฐ’๊ณผ ์ฐพ๊ณ ์žํ•˜๋Š” ๋ชฉํ‘œ ๊ฐ’ ๋น„๊ต

3. ๋ชฉํ‘œ ๊ฐ’์ด ์ค‘์•™ ๊ฐ’๋ณด๋‹ค ์ž‘์œผ๋ฉด ์™ผ์ชฝ ๊ตฌ๊ฐ„ ํƒ์ƒ‰ ์ˆ˜ํ–‰, ํฌ๋ฉด ์˜ค๋ฅธ์ชฝ ๊ตฌ๊ฐ„ ํƒ์ƒ‰ ์ˆ˜ํ–‰

4. ์›ํ•˜๋Š” ๋‹ต์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต


๐Ÿ’ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„

  • ์ž๋ฃŒ์˜ ์‹œ์ž‘์ ๊ณผ ์ข…๋ฃŒ์ ์„ ์ด์šฉํ•ด์„œ ๊ฒ€์ƒ‰

public static void main(String[] args) {
		int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
		binarySearch(arr, 2); // 2์˜ ์ธ๋ฑ์Šค ์ฐพ๊ธฐ
	}

	static int binarySearch(int[] arr, int target) {
		int start = 0, end = arr.length-1;
		int mid;
		
		int result = 0;
		while(start <= end) {
			mid = (start + end) / 2;
			
			if(arr[mid] < target) start = mid+1;
			else if(arr[mid] > target) end = mid-1;
			else {
				result = mid;
                break;
			}
		}
		return result;
	}

0๊ฐœ์˜ ๋Œ“๊ธ€