본문 바로가기

반응형

탐색

탐색 - 해시 탐색법(Hash Search) 해시 탐색법은 데이터와 데이터를 저장할 인덱스를 연관시켜 짧은 시간에 찾을 수 있도록 한 알고리즘이다. 1. 넣을 값의 인덱스 찾기 값을 전체 사이즈로 나눈 값의 나머지로 인덱스를 정한다 (v % size = idx) 2. 값을 넣을 인덱스에 값이 있을때 아까 넣은 1과 21은 v%5 값이 같기 때문에 충돌이 일어난다!! 이럴때는 찾은 v%5값을 하나씩 증가하면서 빈 공간을 찾는다. idx 값이 2일 때 비어있으므로 여기에 넣는다!! 0. 구현 package com.bp.restart.search; public class HashSearch { private int [] BUCKTES = null; private int SIZE = 0; public HashSearch(int size){ this.BUC.. 더보기
탐색 - 이진탐색법(Binary Search) 순차탐색법(Linear Search) 보다 훨씬 좋은 성능을 보이는 탐색법이다. 그러나 이진탐색법을 이용하기 위해선 "배열에 저장된 데이터는 정렬되어 있어야 한다" 다음의 배열에서 숫자 5의 인덱스를 구해보자. int [] arr index 0 1 2 3 4 5 6 7 8 value 2 3 5 6 8 10 11 15 19 1. 배열의 가운데 숫자 arr[4] 가 3보다 크다. >> 숫자 5는 배열의 index가 0, 1, 2, 3 중에 하나 이다. 2. 배열의 index 가 0~ 3 의 중간인 arr[1] 가 2 보다 작다 >> 숫자 5 는 배열의 index 가 2, 3, 중에 하나이다. 3. 배열 index 가 2~ 3 의 중간인 arr[2] 의 값이 5이다!! 이러한 과정으로 배열에 길이가 n일때 1.. 더보기
탐색 - 순차탐색(Linear Search) 선형탐색법! 탐색법 중에 하나다 앞에서부터 하나하나 확인하면서 찾는 탐색법 가장 단순하고 가장 쉽다. public class Search { /** * 선형 탐색 * @param array : 찾을 배열 * @param find : 찾을 * @return 찾은 idx */ int linear(int [] array, int find){ for(int i = 0 ; i < array.length ; i++){ if(array[i] == find) { return i; } } return -1; } } 더보기

반응형