반응형

old/자료구조_알고리즘 7

[Java] 검색 알고리즘 - 보초법을 활용한 선형검색 과정을 출력하는 프로그램

본 포스팅은 'Do it! 자료구조와 함께 배우는 알고리즘 입문 Java편'을 스터디 한 내용입니다. 안녕하세요. 글쓰는 개발자입니다. 자료구조 관련하여 study내용을 포스팅 하다 보니, 다소 문체가 많이 딱딱했었는데요. 글쓰는 개발자 답게, 저의 문체가 아니다보니 조금은 불편(?)하기도 하고해서 연습문제처럼 제가 스스로 생각한 프로그램들은 원래의 형식대로 포스팅하고자 합니다. 배열의 선형검색 과정을 console창에 출력하는 프로그램을 만드는 것인데요. 저는 나름대로 한 번 더 생각하기 위해서 보초법을 활용하는 과정을 출력하고자 합니다. 선형검색과 관련된 내용이 숙지가 안되신 분들은 아래링크를 통해, 먼저 학습하고 오시면 이해가 빠르실거라 생각됩니다. https://backstreet-programm..

[Java] 검색 - 선형(순차)검색 / 보초법

본 포스팅은 'Do it! 자료구조와 함께 배우는 알고리즘 입문 Java편'을 스터디 한 내용입니다. 선형 검색 원하는 키(key)값을 갖는 요소를 만날 때 까지 맨 앞부터 순서대로 요소를 검색하는 것을 선형(linear) 또는 순차(sequential) 알고리즘 이라고 함 검색의 종료 조건 ① 검색할 값과 같은 요소를 발견한 경우 (n 회, 평균 n/2회) ② 검색할 값을 발견하지 못하고 배열의 끝을 지나간 경우(n+1회) 선형검색 구현 코드 n개의 요소를 대상으로 값이 key인 요소를 선형검색하고 검색한 요소의 index를 반환함. 값이 key인 값이 여러개 존재할 경우, 최초 발견된 index만 반환하고 검색이 종료됨. import java.util.Scanner; /** * @Date 2020. ..

[Java] 검색 알고리즘

본 포스팅은 'Do it! 자료구조와 함께 배우는 알고리즘 입문 Java편'을 스터디 한 내용입니다. 검색하기 - 특정 항목에 주목하는 것은 검색하기의 공통점이며, 특정항목은 키(Key)라고 함 - 국적을 검색하는 경우 국적이 키(key)이고, 나이를 검색하는 경우 나이가 키(key)임. - 키(key)는 데이터 값 뿐만 아니라, 데이터의 '일부'임 배열에서 검색하기 1. 선형 검색 : 무작위로 늘어놓은 데이터 모임에서 검색을 수행 2. 이진 검색 : 일정한 규칙으로 늘어놓은 데이터 모임에서 아주 빠른 검색을 수행 3. 해시법 : 추가, 삭제가 자주 일어나는 데이터 모임에서 아주 빠른 검색을 수행 - 체인법 : 같은 해시 값의 데이터를 선형 리스트로 연결하는 방법 - 오픈 주소법 : 데이터를 위한 해시 ..

[Java]소수의 나열, 소수인지 판단하는 알고리즘

본 포스팅은 'Do it! 자료구조와 함께 배우는 알고리즘 입문 Java편'을 스터디 한 내용입니다. 방법 1, 2, 3으로 진행되면서 나눗셈 횟수를 줄이는 방향으로 알고리즘을 개선함. 방법 1. 2부터 n을 1씩 증가시키며, 그 값이 소수인지 판단함. 이중 for문의 안쪽에서 n까지 i를 1씩 증가시키면서 나누어떨어지면 break;를 통해 반복문을 탈출함. 그동안 counter++되면서 나눗셈 횟수를 증가시킴. 짝수 및, 소수의 배수들 또한 반복적으로 테스트함으로 불필요한 나눗셈 횟수가 많아짐. /** * @Date 2020. 1. 26. * @Time 오후 4:03:00 * @author BRYANT * ===================== * Writing Developer */ public cl..

[Java] 기수변환/진수변환 계산기(2진수, 8진수, 10진수, 16진수)

본 포스팅은 'Do it! 자료구조와 함께 배우는 알고리즘 입문 Java편'을 스터디 한 내용입니다. 기수 : 수를 나타내느데 기초가 되는 수로 10진수에서는 0~9까지의 정수를 말함. 전위형 증가연산자 ++a - ++을 앞에 놓으면 식 전체를 평가하기 전 피연산자의 값을 증가시킴 - 예를들어 a값이 3일 때, b = ++a를 실행하면 ++a평가값 4를 b에 대입시키고 a==b==4가 됨. 후위형 증가연산자 a++ - ++를 뒤에 놓으면 식 전체를 평가한 후에 피연산자의 값을 증가시킴. - 예를들어 a값이 3일 때, b = a++을 실행하면 3을 b에 먼저 대입하고 ++이 수행되어, a는 4가 됨. 결국 a==4, b==3 기수변환(진수변환) 과정을 포함하여 출력하는 계산기 만들기 목차 1. 변환 메소드..

[Java]배열요소 역순으로 복사하기

본 포스팅은 'Do it! 자료구조와 함께 배우는 알고리즘 입문 Java편'을 스터디 한 내용입니다. 배열요소 역순 복사를 위해서, 1) 복사하고자 하는 배열을 역순으로 정렬하고 2) 역순정렬된 배열을 복사한다. 이를 위해, swapArray와 reverseArray메소드를 활용해 main 메소드에 생성했던 originArray를 역순정렬한 후, copyArray 메소드에서 복사하는 방식이다. import java.util.Scanner; /** * @Date 2020. 1. 25. * @Time 오후 11:56:27 * @author BRYANT * ===================== * Writing Developer */ public class arrayReverseCopy { static vo..

[Java]배열 요소 역순으로 정렬하기

본 포스팅은 'Do it! 자료구조와 함께 배우는 알고리즘 입문 Java편'을 스터디 한 내용입니다. 1. 배열의 역순 정렬은 요소 교환이 총 n/2회 필요함. 1) x값을 t에 보관 2) y값을 x에 대입 3) t에 보관한 처음 x값을 y에 대입 static void swap(int[] a, int idx1, int idx2) { int t = a[idx1]; a[idx1] = a[idx2]; a[idx2] = t; } 2. 배열을 역순으로 정렬 배열의의 이름이 a이고 크기가 5라면 역순정렬을 위해서는 (a[0], a[4]), (a[1], a[3]), a[2]의 쌍으로 교환이 되어야 한다. for문을 활용한다면, i=0부터 시작해서 배열길이의 절반(a.lenght/2)만큼 반복되어야 한다. static..

반응형