본문 바로가기

알고리즘3

자료구조 - 연결 리스트 안녕하세요 이번 글은 자료구조 중에서 연결 리스트에 대한 글입니다. 연결 리스트(linked list)는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조입니다. 데이터를 담고 있는 노드들이 연결되어 있는데, 노드의 포인터가 다음이나 이전의 노드와 연결하는 역할을 하고 있습니다. 연결 리스트는 추가와 삭제가 O(1)의 시간에 가능하다는 장점이 있습니다. 하지만 데이터를 검색해 내는 데에는 O(n)의 시간이 걸리는 단점을 갖고 있습니다. 연결 리스트의 종류로는 단일 연결 리스트, 이중 연결 리스트, 원형 연결 리스트가 있습니다. 단일 연결 리스트 단일 연결 리스트는 각 노드에 데이터 공간과 포인터 공간이 있고, 각 노드의 포인터는 다음 노드를 가리킵니다. 이중.. 2021. 3. 27.
삽입 정렬 알고리즘(insertion sort Algorithm) - javascript 안녕하세요 기공 준입니다. 이번에는 삽입 정렬에 대해 알아볼 건데요 간단한 설명과 예제 및 코드로 글을 마무리하겠습니다. 삽입 정렬은 자료 배열의 모든 요소를 이미 정렬된 배열 부분과 앞에서부터 차례대로 비교하여, 자신의 위치를 찾아 삽입하는 정렬입니다. 배열이 길어질수록 효율이 떨어지지만 구현이 아주 간단하다는 장점이 있습니다. 시간 복잡도는 O(n²)입니다. 예제 [3,2,5,10,33,51,20,16] 시작 [2,3,5,10,33,51,20,16] 2 삽입 [2,3,5,10,33,51,20,16] 패스 [2,3,5,10,33,51,20,16] 패스 [2,3,5,10,33,51,20,16] 패스 [2,3,5,10,33,51,20,16] 패스 [2,3,5,10,20,33,51,16] 20 삽입 [2,3.. 2021. 3. 26.
선택 정렬 알고리즘(selection sort Algorithm) - javascript 안녕하세요 기공준입니다. 이번 글은 선택 정렬 알고리즘에 대한 글입니다. 선택 정렬 알고리즘은 정렬 알고리즘 중에 하나이고 알고리즘이 대단히 단순하기 때문에 메모리가 제한적인 경우에 사용하면 성능상의 이점이 있다고 합니다. 시간 복잡도는 O(n²)입니다. 선택 정렬을 하는 방법은 아주 간단합니다. 1. 주어진 리스트 중에 최소값을 찾는다. 2. 그 값을 맨 앞에 위치한 값과 교체한다. 3. 맨처음 위치를 뺀 나머지 리스트를 같은 방법으로 진행한다. 예제 [5,2,22,4] [2,5,22,4] [2,4,22,5] [2,4,5,22] 예제 코드 - javscript const selectionSort = (array) => { let minIdx; let tempValue; for(let i=0;i 2021. 3. 23.