이진 탐색 (Binary Search)
·
알고리즘 (with JAVA)/기본 알고리즘
1. 개념 설명 (1) 이진 탐색은 정렬된 배열에서 검색 범위를 줄여 나가면서 원하는 데이터를 검색하는 알고리즘이다. (2) 이진 탐색은 오름차순으로 정렬된 정수의 리스트를 같은 크기의 두 부분 리스트로 나누고 필요한 부분 에서만 탐색하도록 제한하여 원하는 원소를 찾는 알고리즘이다. 2. 과정 - 실제로 수행되는 과정이다. 3. 코드 public class BinarySearch { static int[] A = { 7, 2, 8, 10, 1 }; public static void main(String[] args) { Arrays.sort(A); solve(10, 0, A.length-1); } public static void solve(int a, int low, int high){ int mid=..
계수 정렬 (Counting Sort)
·
알고리즘 (with JAVA)/기본 알고리즘
1. 개념 설명(1) 계수 정렬은 데이터의 개수(예를 들면 1이 두 개 있다면 2)를 데이터의 값에 대응하는 위치에 저장한 뒤, 자신의 위치에서 앞에 있던 값을 모두 더한 배열을 만든 뒤, 거기서 데이터가 들어가야 할 위치를 찾아내는 알고리즘이다. (2) 계수 정렬은 가장 큰 데이터에 따라 효울이 좌지우지 된다.   2. 과정1. 정렬해야 할 배열을 탐색하여 그 최댓값을 구한다.( 여기서는 주어진 배열 A를 사용한다. )A =  [5, 4, 1, 3, 2, 5, 1]최댓값 K = 5; 2. K+1 만큼의 크기로counts 배열을 생성한다.counts = [0, 0, 0, 0, 0, 0] 3. A 배열 모든 원소에 대하여 각 대응되는 인덱스 위치에 ++를 해준다.counts = [0, 2, 1, 1, 1,..
기수 정렬 (Radix Sort)
·
알고리즘 (with JAVA)/기본 알고리즘
1. 개념 설명(1) 기수 정렬은 간단하게 말하면 데이터의 N진법을 기준으로 정렬하는 알고리즘이다.( 예를 들면, N이 10이고 정렬할 데이터는 10, 5, 15, 234, 1이라고 하자. 그렇다면 아래와 같이 기준을 잡는다. ) 10^0의 자리: 0) 010, 1) 001, 4) 234, 5) 005, 015. 순서대로 이어붙이면 010, 001, 234, 005, 015.10^1의 자리: 0) 001, 005, 1) 010, 015, 3) 234. 순서대로 이어붙이면 001, 005, 010, 015, 234.10^2의 자리: 0) 001, 005, 010, 015, 2) 234. 순서대로 이어붙이면 001, 005, 010, 015, 234. ( 이 과정을 거치면 정렬된 결과인 1, 5, 10, 1..
힙 정렬 (Heap Sort)
·
알고리즘 (with JAVA)/기본 알고리즘
1. 개념 설명(1) 힙 정렬은 *완전 이진 트리를 기본으로 하는 힙 자료구조를 기반으로한 알고리즘이다.( *완전 이진 트리는 삽입할 때 왼쪽부터 차례대로 추가하는 이진 트리를 말한다. ) (2) 사실 힙 정렬은 선택 정렬과 거의 같은 알고리즘으로, 단지 가장 큰 원소를 뒤로 보내는 데에 단순히 매번 쭉 돌면서 알아내느냐 힙을 사용하여 알아내느냐가 유일한 차이점이다.   2. 과정   3. 코드: 여기서의 코드는 2.과정처럼 배열 한 개씩 넣어서 이진트리를 만드는 것이 아닌 이미배열의 값들이 순차적으로 트리의 형태로 있다고 가정하고 진행하는 것이다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748..