데이터의 기본 종류에는
- Contiguous data structures는 연속적으로 또는 인접한 메모리 섹터에 데이터를 저장하는 것을 의미한다. 이와 같은 예로는 Array, Heaps, Matrices, Hash table등이 존재합니다.
- Linked data Structures는 Pointers에 의해 묶여 있는 메모리의 구분된 섹터로 구성됩니다. 예들은 리스트, 트리, 그래프를 포함합니다.
Contiguous data structures
- Arrays
가장 단순한 형태인 선현적인 Array이는 1차원적인 array입니다.
이와 같은 형태입니다. 각 element는 ai라는 형태를 띄게 되며 여기서 i는 정수 값으로서 0~n까지의 값을 가지게 됩니다. 고차원적인 array이는
와 같은 형태를 가지게 됩니다. 여기서의 aij는 i는 row의 값을 j는 column의 값을 가지게 됩니다.
스위프트에서 array를 선언할 수 있는 방법은 3가지가 있습니다.
- var array1: Array
= [1,2,3,4,5] - var array2: [Int] = [1,2,3,4,5]
- var array3 = [1,2,3,4,5]
와 같은 방식으로 배열을 정의할 수 있습니다. 3번째와 같은 방식은 타입을 추론하는 것으로 compile 단계에서 여러분이 입력한 값의 타입을 추론하여 타입을 결정하게 되는 것입니다. 3번째와 같은 방식을 우리는 주로 사용하게 될 것입니다.
지금까지는 1차원적인 Array이였다면 이제는 고차원적인 array를 한번 만들어 보겠습니다.
간단합니다. array를 사위 array로 묶어 주면서 만들어 주면 됩니다. 예를 들어서..
- var array4 = [[1,2],[3,4],[5,6]]
와 같이 만들어 주면 됩니다.
인자 추출하기
var myIntArray = [1,2,3,4,5] 와 같이 정의 했고 우리가 만약 index값을 알고 있다면 이를 쉽게 추출할 수 있습니다.
myIntArray[1]
또는 for - in loop를 통해서 전체 값을 순환 할 수도 있을 것입니다.
for element in myIntArray { print(element) }
특정 범위의 인덱스 값을 가져올 수도 있습니다.
var someSubset = myIntArray[2...4] print(someSubset)
2차원적인 array를 생성해 보도록 하겠습니다.
var my2DArray = [[1,2],[3,4],[5,6]]
var element = my2DArray[0][0] var element2 = my2DArray[1][1]
Adding elements
다양한 method를 통해서 adding 할 수 있는데 먼저 뒤에 붙이는 것, 특정 index에 넣는 것을 보겠습니다.
var array2 = [1,2,3,4,5] array2.append(7) print(array2) array2.insert(6, at: 5) print(array2)
elements 지우기
이미 선언한 array2에서 element를 지워보도록 하겠습니다.
array2.removeLast() print(array2)
특정 인덱스의 element를 지울 수도 있습니다.
array2.remove(at: 5) print(array2)
'DataStructure' 카테고리의 다른 글
Array (0) | 2017.03.26 |
---|