본문 바로가기

Algorithm

(5)
에라토스테네스의 체 (소수를 찾는 방법) 에라토스테네스의 체란? - 고대 그리스 수학자 에라토스테네스가 발견한 소수를 찾는 방법이다. - 어떤수( 소수를 구하고자 하는 값 )의 제곱근보다 작은 소수의 배수를 없애면 남은 수가 어떤수의 소수가 된다. 한마디로 어떤수가 100이라고 가정할때 100의 소수를 구하려면 매우 어렵지만 100의 제곱근인 10의 소수의 배수를 배제하고 나면 100의 소수만 남게된다는 방법이다. 에라토스테네스의 체 알고리즘 처리구조 1. 요소의 소수의 배수를 제거하는 구조 2. 소수에 다음 소수를 대입하는 구조 3. 소수가 입력값 제곱근 이하일 때 반복하는 구조 4. 소수인 첨자를 출력 코드구현 // input Scanner sc = new Scanner(System.in); System.out.print("소수를 구할 값을..
퀵정렬 퀵 정렬이란? - 기준값(pivot)을 정한뒤 기준값(pivot)을 기준으로 데이터를 대소 그룹의 둘로 나누어 두개에 집합을 만든뒤 분할하여 전체 정렬을 만들어 내는 정렬 알고리즘. + 기존 정렬 알고리즘 들 의 비하여 빠른 실행성능을 가진다. - 기준값(pivot)을 어떻게 설정하느냐의 따라 실행성능이 좌우된다. 퀵정렬 처리구조 1. pivot 정하기 2. pivot 중심으로 대소관계를 나누어 2개의 집합으로 분할 하는 처리 3. 작은수의 집합에 2번 처리를 반복 4. 높은수의 집합에 2번 처리를 반복 코드구현 public void QuickSort(int[] array, int left, int right){ int i = left + 1; int k = right; int w = 0; while( ..
단순 삽입법 (삽입 정렬) 단순 삽입법 이란 ? - 데이터 정렬알고리즘 중 하나로서 요소를 차례대로 올바른 위치에 삽입해나감으로서 오름차순,내림차순 으로 정렬하는 알고리즘이다. + 구현하기 쉽고 요소들이 이미 정렬된 상태라면 효율적일 수 있다. - 요소 수가 많다면 많은 이동을 필요로 하기에 적합하지 않다. 단순 삽입법 구조 1. 테이블에 첫번째 칸을 기준값으로 정한뒤 정렬된칸 과 정렬안된 칸을 나눈다. 2. 정열된 칸의 뒤에 위치한 수와 대소 관계를 비교한뒤 정열된 칸에 삽입한다. 3. 정열된 칸에 존재했던 기존에 값과 새로 삽입된 값을 비교후 정렬한다. 4. 테이블 크기 만큼 반복 코드 int[] array = {7,6,5,4,3,2,1}; int i = 1; while( i < 7 ){ int x = array[i]; int..
단순 교환법 (버블정렬) 단순 교환법( 버블정렬 )이란? 인접한 데이터를 교환하는 처리를 반복하여 전체를 정렬한다. # 처리과정이 마치 거품이 올라오는것 같이 보여서 버블 정렬이라 불린다함. 창의력 지립니다.. + 알고리즘이 단순하여 구현하기가 쉽다. - 처리량이 많아 실행속도가 느리다. 처리구조 1.오른쪽 끝부터 순서대로 앞에 공과 비교하여 오름차순으로 정렬 2. 왼쪽 끝 부터 확정된 최소값을 넣으며 배열크기만큼 확장 코드구현 int[] array = {5,3,4,1,2}; int w = 0; int k = 0; while( k k ) { if(array[i-1] > array..
단순 선택법 (선택 정렬) 정렬 알고리즘이란 ? 데이터를 큰 순서 또는 작은 순서로 바꾸어 나열하는 알고리즘이다, 정렬을 영어로 표현하면 소트(sort)이므로 소트(sort) 알고리즘이라고도 한다. 정열알고리즘 종류 다양한 정열 알고리즘이 존재하지만 가장 기본적이고 널리 알려진 알고리즘을 네가지로 추려보면, 1. 단순 선택법 (선택 정렬) 2. 단순 교환법 (버블 정렬) 3. 단순 삽입법 (삽입 정렬) 4. 퀵정렬 정도가 있고 그중 오늘 기록할 알고리즘은 단순 선택법 (선택 정렬) 이다. 단순 선택법( 선택 정렬 ) 이란? 가장작은 데이터를 선택하여 맨 앞부터 순서대로 정렬해 나가는 알고리즘 + 단순하고 구현하기 쉽다. - 처리속도가 느리기 때문에 데이터가 많을 경우 적합하지 않다. 처리구조 1. 탐색 범위의 최솟값을 찾는 처리 ..