본문 바로가기

Java/Data Structures4

4. 선택정렬 public class SelectionSort { // 두 인덱스의 벨류를 바꾸는 메서드 // 정렬할 정수 배열과 서로 교체할 인덱스 i, j 를 인자로 받는다 public static void swapElements(int[] arr, int i, int j) { // 기존의 수 [i]를 따로 기억하고 int temp = arr[i]; // 기존 [i] 자리에 [j]의 값을 넣으며 arr[i] = arr[j]; // 저장해두었던 [i]의 값을 다시 [j]의 자리에 넣는다. arr[j] = temp; } // 탐색 // 정수 배열과 시작 인덱스를 인자로 받는다. public static int indexLowest(int[] arr, int start) { // 시작인덱스를 따로 기억하고 int low.. 2021. 3. 16.
3. 알고리즘 분석 어떤 응용프로그램인지에 따라 어떤 구현체를 사용하여 데이터를 처리하는게 좋은지 알 수 있는 방법중 한가지 방법은 두 구현체를 모두 구현하여 비교해보는 것이다. 이 방법에는 몇 가지 문제점이있고 다음과 같다. - 알고리즘 비교시 사전에 모두 구현하여 비교해봐야한다 (비용 상승) - 경과는 사용 컴퓨터의 성능에 의전한다. - 결과는 문제 크기나 입력으로 사용하는 데이터에 의존하기도 한다. 알고리즘 분석을 사용하면 이런 문제들을 해결할 수 있다. 하지만 몇가지를 가정해야하는데 그 는 아래와 같다. 1. 하드웨어에 세부사항을 다루지 않기에 보통 알고리즘을 이루는 기본 사칙 연산등의 기본연산을 식별하며 이 연산 수를 센다. 2. 입력데이터의 세부사항을 다루지 않기위해 평균 성능 분석을 하며 가능하지 않을때는 최악.. 2021. 3. 16.
2. List Interface? 리스트는 왜 나뉘어져있을까? JCF (Java Collection Framework)를 사용하다보면 종종 ArrayList와 LinkedList로 List에 주입하는데 왜 두가지 구현을 제공할까? 어떤 동작은 ArrayList가 빠르고 어떤 상황에서는 LinkedList가 더 효율적이다. List와 같이 Interface는 메서드의 집합을 의미한다 아래 코드를 보자. public class ExampleList { private List list; private ExampleList() { list = new LinkedList(); } private List getList() { return list; } public static void main(String[] args) { ExampleList i.. 2021. 3. 16.
1. 자료구조 왜? - 왜 배우지? 와 닿지는 않지만.. 자바의 컬렉션 프레임워크와 주요클래스를 중심으로 개념을 학습하고 시간 복잡도를 분석하며 성능을 측정할 수 있는 능력음 함양하고 그 다음으로 이어질 자바 성능에대해 접근하기 위함. 하~ 자료구조와 알고리즘은 소프트웨어의 품질을 높이는 아주아주 기본적인 작업이래요 그래서 해보려고요 2021. 3. 16.