728x90 java4 선택 정렬 알고리즘 - Selection Sort 선택 정렬 알고리즘 개념 선택 정렬 알고리즘은 주변에서 쉽게 접할 수 있는 알고리즘 중 하나입니다. 선택 정렬의 기본 개념은 데이터의 처음부터 끝까지 읽어가면서 가장 작은 값을 찾아 그 값을 첫 번째 데이터와 자리를 바꾸고, 두 번째로 작은 데이터를 찾아 두 번째의 데이터와 자리를 바꾸는 방법으로 구현하는 정렬 알고리즘입니다. 선택 정렬 알고리즘 구현 public class test { public static void selectionSort(int[] arr) { for(int i=0; i 2021. 5. 25. 자료구조 - 단일 링크드리스트 단일 링크드리스트의 특징 링크드 리스트는 자료를 저장하는 자료구조의 하나에 불과합니다. 하나 이상의 데이터를 저장한다는 면에서 기본 개념은 배열하고 거의 같습니다. 그런데 왜 배열을 사용하지 않고 단일 링크드 리스트를 사용하는지 알아야합나다. 단일 링크드 리스트의 장점은 곧 배열의 단점입니다. 배열은 같은 자료형을 갖는 데이터의 집합으로, 연속적인 데이터를 저장한다는 특성이 있습니다. 배열은 생성할 때 데이터를 저장하는 데 필요한 모든 메모리를 한 번에 확보해 사용할 수 있게 해주므로 프로그램이 실행되는 중간에 배열의 크기를 바꿀 수 없습니다. 따라서 배열 안에 저장되어 있는 값들을 정렬할 때도 메모리에 저장되어 있는 각각의 값을 바꿔주어야 합니다. 단일 링크드 리스트는 이와 같은 배열의 단점을 .. 2021. 5. 25. 자료구조 - 배열(Array)과 링크드리스트(Linked List) 배열(Array) C언어뿐만 아니라 대부분의 프로그래밍 언어에서 메모리를 쉽게 사용하는 방법은 배열을 사용하는 것입니다. 배열은 기본적으로 메모리에 연속적인 데이터를 저장할 수 있기 때문에 대부분의 알고리즘에서 가장 많이 사용되는 기본적인 개념이기도 합니다. 배열은 논리적 순서와 물리적 순서가 일치합니다. 따라서 index 값을 통한 원소 접근이 용이하며, 구현이 쉽다는 장점이 있습니다. 단점은 삽입, 삭제 등 연산에 필요한 Cost가 높다는 것입니다. 삭제의 경우 순서를 맞추기 위해, 뒤의 원소들을 모두 앞으로 Shift 연산을 해줘야 하며, 삽입의 경우도 삽입한 인덱스를 포함, 그 뒤의 인덱스들에 Shift 연산을 해줘야 합니다. 링크드리스트(Linked List) Linked List는 위에서 언급.. 2021. 5. 25. 허프만 코딩(Huffman Coding) - Java 구현 허프만 코딩 개념 허프만 코딩은 텍스트 압축을 위해 널리 사용되는 방법으로, 원본 데이터에서 빈도수가 높은 문자는 적은 비트의 코드로, 빈도수가 낮은 문자는 많은 비트의 코드로 변환하여 표현합니다. 이를 통해 전체 데이터를 표현하는데 필요한 비트 수를 줄입니다(압축을 의미). 이러한 압축 과정에서 가장 중요한 부분이 각 문자를 표현하기 위한 허프만 트리를 구성하는 것입니다. 아래 그림은 허프만 트리를 만드는 과정을 예시로 보여줍니다. (a -> f) 각 과정에 대한 설명은 다음과 같습니다. (a) 원본 데이터에 포함된 각 문제에 대한 출현 빈도수를 구해 오름차순으로 정렬한다. : 정렬방식(내림차순, 오름차순)은 크게 영향받지 않습니다. (b) 출현 빈도가 가장 작은 f, e를 묶어 이진 트리를 구성하고,.. 2021. 4. 9. 이전 1 다음 728x90