본문 바로가기
  • 개발공부 및 일상적인 내용을 작성하는 블로그 입니다.

자료구조 및 알고리즘23

[알고리즘] 자바에서의 재귀 호출(Recursive Call) # 1 재귀 용법(Recursive Call, 재귀 호출) - 고급 정렬 알고리즘에서 재귀 용법을 사용하므로, 고급 정렬 알고리즘을 익히기 전에 재귀 용법을 먼저 학습하는 것이 좋다. - 함수 안에서 동일한 함수를 다시 호출하는 형태이다. - 재귀 용법은 다른 알고리즘과는 달리 코드를 작성하느 일정한 패턴이 있다. - 재귀 함수는 내부적으로 스택처럼 관리된다. 재귀 호출을 이용해 팩토리얼을 구하는 알고리즘을 작성해보자. - 팩토리얼의 경우 결과값을 구하기 위한 일정한 규칙이 있다. - n! = n * (n - 1)! - 메소드로 만들 경우 메소드(n) 은 n > 1 이면 return n * 메소드(n - 1), n = 1 이면 return n * 코드로 작성해보자. - Factorial.java import j.. 2021. 12. 1.
[알고리즘] 자바에서의 선택 정렬 선택 정렬(Selection Sort) - 다음과 같은 순서를 반복하며 정렬하는 알고리즘 이다. 1. 주어진 데이터 중, 최소값을 찾는다.(배열 전체를 둘러보며 최소값을 찾는다.) * 매 반복을 수행하며 최소값을 찾을 때마다 배열 끝까지 찾아가며 데이터를 비교해봐야 한다. 2. 해당 최소값을 데이터 맨 앞에 위치한 값과 교체한다. 3. 맨 앞의 위치(최소값) 을 뺀 나머지 데이터를 동일한 방법으로 반복한다. 자바 코드로 직접 구현해보자. - SelectionSort.java public class SelectionSort { private int[] array; public SelectionSort(int[] array) { this.array = array; } public int[] selection.. 2021. 11. 30.
[알고리즘] 자바에서의 삽입정렬 삽입 정렬(Insertion Sort) - 삽입 정렬은 두번째 인덱스부터 시작하여 마지막 인덱스 까지 로직을 수행한다. - 해당 인덱스(key 값) 앞에 있는 데이터부터 key 값과 비교를 시작한다. - 만약 key 값 보다 key 값의 앞에 있는 데이터가 클 경우, 두 요소의 위치를 바꿔주고 이를 key 값이 앞에 있는 값보다 더 클 때가지 반복한다. - 만약 key 값이 배열에서 가장 작은 값일 경우, 더 작은 값이 앞에 나타나지 않고 계속 위치를 변경해주게 되어 해당 인덱스는 배열에서 가장 앞에 위치하게 된다. - 만약 중간에 key 값 보다 작은 값이 나타날 경우, 더 이상 위치를 바꿔주지 않고 해당 회차의 반복문을 종료해준다. 삽입 정렬 알고리즘의 패턴? * 배열 길이 별 데이터 비교 최대 횟수.. 2021. 11. 30.
[알고리즘] 자바에서의 버블 정렬 정렬 알고리즘의 개요 - 정렬(sorting) : 어떤 데이터들이 주어졌을 때 이를 정해진 순서대로 나열하는것 - 정렬은 프로그램 작성 시 빈번하게 필요로 한다. - 다양한 알고리즘이 고안 되었으며, 알고리즘 학습의 필수 요소이다. - 다양한 정렬 알고리즘 이해를 통해 동일한 문제에 대해 다양한 알고리즘이 고안될 수 있음을 이해하고, 각 알고리즘 간 성능 비교를 통해 알고리즘 성능 분석에 대해서도 이해할 수 있다. 버블 정렬 - 두 인접한 데이터를 비교해서, 앞에 있는 데이터가 뒤에 있는 데이터보다 크면 자리를 바꾸는 알고리즘 - 매 반복 마다 0번째 인덱스 부터 시작하여 마지막 인덱스 까지 앞, 뒤에 있는 숫자끼리 비교하여 각자 위치를 바꿔줌으로서 최종적으로 오름차순, 또는 내림차순 정렬을 완료한다. .. 2021. 11. 30.