자료구조&알고리즘 4

swift로 구현한 선택(Selection Sort), 버블(Bubble Sort), 삽입(Insertion Sort) 정렬

데이터의 값을 순서대로 정렬하는 정렬 알고리즘(Sort Algorithm) 중 가장 기본이 되는 3가지 정렬에 대해 살펴보겠다. 1) 선택정렬(Selection Sort) 첫번째 인덱스부터 순차적으로 검사하여 해당 인덱스의 값과 그 뒤의 숫자 중 가장 작은 수를 swap해주는 정렬 방식이다. 비교 기준이 되는 값은 첫번째 인덱스부터 순차적으로 들어가게 된다. 예를 들어 [5, 8, 3, 1] 배열이 있을 때, 제일 먼저, 5(index 0)와 1(index0번 뒤로 가장 작은 수)의 크기를 비교해서 위치를 바꿔주고 [5, 8, 3, 1] -> [1, 8, 3, 5] 그 다음 8(index 1)과 3(index1번 뒤로 가장 작은 수)을 비교한 뒤 위치를 바꿔주고 [1, 8, 3, 5] -> [1, 3, ..

swift로 구현한 연결리스트(Linked List)

[특징] 1. 다음 노드에 대한 참조를 가진 형태의 데이터 구조이다. 배열과 유사한 데이터 구조를 가지고 있지만 배열은 일정 규모의 연속된 메모리 범위를 할당받아야 하는 반면, 연결리스트는 그렇지 않다는 차이점이 있다. 보통 스택이나 큐 등 다른 구조를 구현하는 데 사용한다. 스택과 큐를 구현할 때 배열 대신 연결리스트를 사용할 수 있다. 2. 종류 - 단일 연결 리스트(Singly linked list) : 자료 공간 1개와 다음 노드를 가리키는 포인터로 구성된 노드를 가지는 연결 리스트 - 이중 연결 리스트(Doubly linked list) : 앞의 노드와 뒤의 노드를 가리키는 포인터가 2개 있는 연결 리스트 - 순환 연결 목록(Circular linked list) : 마지막 노드와 처음 노드가 ..

swift로 큐 구현하기

[특징]1. FIFO(First-In-First-Out)2. 주요 method - enqueue() : 새로운 데이터 삽입 - dequeue() : 가장 앞의 요소 삭제 및 반환 - peek() : 가장 앞의 요소 삭제 없이 반환만3. 프로퍼티 - count : 큐에 저장된 데이터 갯수 반환 - capacity : 큐 용량 반환4. 추가 method - isEmpty() : 큐가 비어있는 지 확인 - isFull() : 큐가 꽉 차 있는 지 확인 - clear() : 빈 값으로 재설정5. 추가 프로토콜 - CustomStringConvertible, CustomDebugStringConvertible : 상세정보 출력 - ExpressibleByArrayLiteral : []를 이용해서 초기화 가능 - ..

swift로 stack 구현하기

[특징] 1. LIFO(Last-In-First-Out) 2. 주요 method - push() : 새로운 데이터 삽입 - pop() : 가장 마지막 데이터 삭제 및 반환 - peek() : 가장 마지막 요소 삭제 없이 반환만 3. 프로퍼티 - count : 스택에 저장된 데이터 갯수 반환 4. 추가 method - isEmpty() : 스택이 비어있는 지 확인 - isFull() : 스택이 꽉 차 있는 지 확인 5. 추가 프로토콜 - CustomStringConvertible, CustomDebugStringConvertible : 상세정보 출력 - ExpressibleByArrayLiteral : []를 이용해서 초기화 가능 - IteratorProtocol, Sequence : for...in 구문..