본문 바로가기

Basic/자료구조,알고리즘

set 수학의 집합과 비슷 중복허용될 일이없다.인덱스를 활용한 get메소드가 없다 TreeSet은 기본적으로 오름차순으로 데이터를 정렬 LinkedHashSet도 중복된 데이터를 저장할 수 없다. 차이점은 입력된 순서대로 데이터를 관리한다.
삽입정렬 1. 삽입정렬이란?삽입정렬은 정렬 안된 부분에 있는 데이터를 정렬 된 부분의 특정 위치에 삽입해가면서 정렬을 진행하는 것이다.전체적인 원리는 처음 5는 정렬되어있다고 생각하고 3부터 2,4,1을 차례대로 정렬을 진행한다.이를 위한 구체적인 다른 예시를 봐보자아래와 같이 데이터를 한 칸씩 뒤로 밀면서 삽입할 위치를 찾는것이다. 2. 삽입정렬 구현구현설명은 코드 주석을 봐보자1234567891011121314151617181920212223242526272829303132public class InsertionSort { public static void main(String[] args) { int[] arr = {3, 2, 4, 1}; SelSort(arr, arr.length); for(int i=0;..
선택정렬 1. 선택정렬이란?정렬 순서상 가장 앞서는 것을 선택해서 가장 왼쪽으로 이동시키고, 원래 그자리에 있던 데이터는 빈자리로 이동하는것.2. 선택정렬 구현- 버블정렬과 유사하다- for문 중첩으로 구현하였다. - 안쪽 for문의 반복조건과 바깥쪽 for문의 반복조건에 대한 이해가 정확히 필요하다.123456789101112131415161718192021222324252627282930313233public class SelectionSort { public static void main(String[] args) { int[] arr = {3, 2, 4, 1}; SelSort(arr, arr.length); for(int i=0; i
정렬-버블정렬 1. 정렬자료구조에서 정렬을 얘기하는 이유는 탐색을 설명하기 위한것이다.탐색은 어떤 기준을 근거로해서 정렬된 데이터들을 어떻게 효율적으로 탐색할것인가?그것을 논의하는게 탐색이다.탐색에 앞서 선행된 주제가 정렬이다. 2. 버블정렬 이해- 버블정렬은 구현하기는 쉬우나 성능은 떨어진다.- 인접한 두개의 데이터를 비교해가면서 바뀌어야 한다면 두 데이터를 바꾸면서 정렬을 진행한다. 1) 첫번째 : 제일 큰 값을 맨 뒤로 보낸다. 2) 두번째: 두번째로 큰 값을 맨뒤에서 한 칸 앞으로 보낸다. 3) 세번째: 나머지를 동일하게 정렬한다. 이와 같이 순서대로 비교하고 교환하는 일련의 과정이 거품이 일어나는 모습에 비유되어 버블 정렬이라 한다. 3. 버블정렬 구현- for문 중첩으로 구현하였다. - 안쪽 for문의 반복..
우선순위 큐와 힙 1. 우선순위 큐와 힙 큐와 우선순위 큐는 다르다. 큐는 선형 자료구조에 속한다.우선순위 큐는 비선형 자료구조에 속한다큐의 연장선이 아닌 트리의 연장선이라고 봐야한다 우선순위큐는 들어가는 순서와 나가는 순서가 아무런 관계가 없다단지 입구와 출구가있어서 큐라하는것이다.우선순위를 근거로 데이터 뽑아낸다.우선순위는 프로그래머가 결정함. 2. 우선순위 큐의 구현 1) 배열과 연결리스트로 구현 데이터의 수가 많아지면 배열이나 연결리스트는 성능이 떨어진다 그래서 힙을 이용해 구현하는게 좋다 2) 힙이라는 자료구조를 통한 우선순위 큐 구현 힙이 우선순위큐라고 말할수는 없다. 우선순위 큐를 만들기 위해 힙(이진트리)을 사용한것이다. 힙의 특성 2가지 - 이진트리의 일종이다 그런데 그냥이 아닌 완전 이진트리이다 위에서 ..
트리 트리
Deque의 개념과 구현 1. Deque(Double-Ended Queue)이란? 한 쪽 끝으로만 추가/삭제할 수 있는 Queue와 달리, Deque는 양쪽 끝에 추가/삭제가 가능하 다. Deque는 인터페이스로서 자바에서 구현된 클래스는 ArrayDeque과 LinkedList 등이 있다. 덱은 스택으로 사용할 수도 있고, 큐로 사용할 수도 있다. 그래서 덱의 구현에 가장 대표적인 자료구조는 앞에서 보았던 양방향 연결리스트이다. 2. 자바의 Deque 주요 메소드 https://docs.oracle.com/javase/8/docs/api/index.html?java/util/Deque.html Method Descriptionboolean offerLast(E e) Deque의 front에 엘리먼트를 삽입한다.boolean o..
Queue의 다양한 구현 1. 원형 큐(링 버퍼) - 배열 기반 - front(머리), rear(꼬리)라는 변수를 인덱스로 활용해 삽입,조회,삭제를 구현하였다.- front와 rear의 변수가 같다면 큐가 비어있는것이다.- front와 rear+1 이 같다면 큐가 꽉차있는것이다.- 배열의 끝에 도달하면 첫번째 인덱스로 순환하여 원형큐라 한다.- 삭제의 경우 배열에서 실제로 하지 않고 front(머리-출구), rear(꼬리-입구)의 값을 조정한다. 12345678910111213141516171819202122package queue;public class ArrayQueueMain { public static void main(String[] args) {//배열 기반 큐 ArrayQueue queue = new ArrayQue..